{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Chapter 10: Time Series Analysis\n",
    "## Recipes\n",
    "\n",
    "* [Understanding the difference between Python and pandas date tools](#Understanding-the-difference-between-Python-and-pandas-date-tools)\n",
    "* [Slicing time series intelligently](#Slicing-time-series-intelligently)\n",
    "* [Using methods that only work with a DatetimeIndex](#Using-methods-that-only-work-with-a-DatetimeIndex)\n",
    "* [Counting the number of weekly crimes](#Counting-the-number-of-weekly-crimes)\n",
    "* [Aggregating weekly crime and traffic accidents separately](#Aggregating-weekly-crime-and-traffic-separately)\n",
    "* [Measuring crime by weekday and year](#Measuring-crime-by-weekday-and-year)\n",
    "* [Grouping with anonymous functions with a DatetimeIndex](#Grouping-with-anonymous-functions-with-a-DatetimeIndex)\n",
    "* [Grouping by a Timestamp and another column](#Grouping-by-a-Timestamp-and-another-column)\n",
    "* [Finding the last time crime was 20% lower with merge_asof](#Finding-the-last-time-crime-was-20%-lower-with-merge_asof)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import datetime\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Understanding the difference between Python and pandas date tools"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "date is  2013-06-07\n",
      "time is 12:30:19.463198\n",
      "datetime is 2013-06-07 12:30:19.463198\n"
     ]
    }
   ],
   "source": [
    "date = datetime.date(year=2013, month=6, day=7)\n",
    "time = datetime.time(hour=12, minute=30, second=19, microsecond=463198)\n",
    "dt = datetime.datetime(year=2013, month=6, day=7, \n",
    "                       hour=12, minute=30, second=19, microsecond=463198)\n",
    "\n",
    "print(\"date is \", date)\n",
    "print(\"time is\", time)\n",
    "print(\"datetime is\", dt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "19 days, 10:20:06.829008\n"
     ]
    }
   ],
   "source": [
    "td = datetime.timedelta(weeks=2, days=5, hours=10, minutes=20, \n",
    "                        seconds=6.73, milliseconds=99, microseconds=8)\n",
    "print(td)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "new date is 2013-06-26\n",
      "new datetime is 2013-06-26 22:50:26.292206\n"
     ]
    }
   ],
   "source": [
    "print('new date is', date + td)\n",
    "print('new datetime is', dt + td)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "ename": "TypeError",
     "evalue": "unsupported operand type(s) for +: 'datetime.time' and 'datetime.timedelta'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-5-bd4e11db43bd>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtime\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mtd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for +: 'datetime.time' and 'datetime.timedelta'"
     ]
    }
   ],
   "source": [
    "time + td"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2012-12-21 05:10:08.000099')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timestamp(year=2012, month=12, day=21, hour=5, minute=10, second=8, microsecond=99)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2016-01-10 00:00:00')"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timestamp('2016/1/10')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2014-05-10 00:00:00')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timestamp('2014-5/10')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2019-01-03 20:45:33')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timestamp('Jan 3, 2019 20:45.56')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2016-01-05 05:34:43.123456789')"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timestamp('2016-01-05T05:34:43.123456789')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('1970-01-01 00:00:00.000000500')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timestamp(500)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('1983-09-10 00:00:00')"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timestamp(5000, unit='D')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2015-05-13 00:00:00')"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.to_datetime('2015-5-13')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2015-05-13 00:00:00')"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.to_datetime('2015-13-5', dayfirst=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2017-09-30 00:00:00')"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timestamp('Saturday September 30th, 2017')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2017-09-30 13:30:00')"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.to_datetime('Start Date: Sep 30, 2017 Start Time: 1:30 pm', format='Start Date: %b %d, %Y Start Time: %I:%M %p')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2013-04-11 00:00:00')"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.to_datetime(100, unit='D', origin='2013-1-1')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0   1970-01-11\n",
       "1   1970-04-11\n",
       "2   1972-09-27\n",
       "3   1997-05-19\n",
       "dtype: datetime64[ns]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s = pd.Series([10, 100, 1000, 10000])\n",
    "pd.to_datetime(s, unit='D')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0   2015-05-12\n",
       "1   2013-01-14\n",
       "2   2017-12-20\n",
       "3          NaT\n",
       "dtype: datetime64[ns]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s = pd.Series(['12-5-2015', '14-1-2013', '20/12/2017', '40/23/2017'])\n",
    "pd.to_datetime(s, dayfirst=True, errors='coerce')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['1999-08-03 03:45:56', '2017-10-31 00:00:00'], dtype='datetime64[ns]', freq=None)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.to_datetime(['Aug 3 1999 3:45:56', '10/31/2017'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timedelta('12 days 05:03:00.123456')"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timedelta('12 days 5 hours 3 minutes 123456789 nanoseconds')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timedelta('5 days 00:07:20.400000')"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timedelta(days=5, minutes=7.34)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timedelta('700 days 00:00:00')"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timedelta(100, unit='W')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'5 dayz'"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.to_timedelta('5 dayz', errors='ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timedelta('2 days 19:15:45.454000')"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.to_timedelta('67:15:45.454')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0   00:00:10\n",
       "1   00:01:40\n",
       "dtype: timedelta64[ns]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s = pd.Series([10, 100])\n",
    "pd.to_timedelta(s, unit='s')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "TimedeltaIndex(['2 days 00:25:29.670000', '0 days 00:45:23.600000'], dtype='timedelta64[ns]', freq=None)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "time_strings = ['2 days 24 minutes 89.67 seconds', '00:45:23.6']\n",
    "pd.to_timedelta(time_strings)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timedelta('24 days 10:06:00')"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timedelta('12 days 5 hours 3 minutes') * 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2017-01-25 10:06:00')"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timestamp('1/1/2017') + pd.Timedelta('12 days 5 hours 3 minutes') * 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "TimedeltaIndex(['03:00:10', '04:01:40'], dtype='timedelta64[ns]', freq=None)"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "td1 = pd.to_timedelta([10, 100], unit='s')\n",
    "td2 = pd.to_timedelta(['3 hours', '4 hours'])\n",
    "td1 + td2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.0"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Timedelta('12 days') / pd.Timedelta('3 days')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "ts = pd.Timestamp('2016-10-1 4:23:23.9')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2016-10-01 05:00:00')"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.ceil('h')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2016, 10, 1, 4, 23, 23)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.year, ts.month, ts.day, ts.hour, ts.minute, ts.second"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(5, 275, 31)"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.dayofweek, ts.dayofyear, ts.daysinmonth"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2016, 10, 1, 4, 23, 23, 900000)"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.to_pydatetime()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timedelta('5 days 05:52:20.280000')"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "td = pd.Timedelta(125.8723, unit='h')\n",
    "td"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timedelta('5 days 05:52:00')"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "td.round('min')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Components(days=5, hours=5, minutes=52, seconds=20, milliseconds=280, microseconds=0, nanoseconds=0)"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "td.components"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "453140.28"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "td.total_seconds()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## There's more..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "date_string_list = ['Sep 30 1984'] * 10000"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "37.8 ms ± 556 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit pd.to_datetime(date_string_list, format='%b %d %Y')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.33 s ± 57.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
     ]
    }
   ],
   "source": [
    "%timeit pd.to_datetime(date_string_list)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Slicing time series intelligently"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "OFFENSE_TYPE_ID              category\n",
       "OFFENSE_CATEGORY_ID          category\n",
       "REPORTED_DATE          datetime64[ns]\n",
       "GEO_LON                       float64\n",
       "GEO_LAT                       float64\n",
       "NEIGHBORHOOD_ID              category\n",
       "IS_CRIME                        int64\n",
       "IS_TRAFFIC                      int64\n",
       "dtype: object"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime = pd.read_hdf('data/crime.h5', 'crime')\n",
    "crime.dtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2014-06-29 02:01:00</th>\n",
       "      <td>traffic-accident-dui-duid</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-105.000149</td>\n",
       "      <td>39.745753</td>\n",
       "      <td>cbd</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014-06-29 01:54:00</th>\n",
       "      <td>vehicular-eluding-no-chase</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>-104.884660</td>\n",
       "      <td>39.738702</td>\n",
       "      <td>east-colfax</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014-06-29 02:00:00</th>\n",
       "      <td>disturbing-the-peace</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>-105.020719</td>\n",
       "      <td>39.706674</td>\n",
       "      <td>athmar-park</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014-06-29 02:18:00</th>\n",
       "      <td>curfew</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>-105.001552</td>\n",
       "      <td>39.769505</td>\n",
       "      <td>sunnyside</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014-06-29 04:17:00</th>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>-105.018557</td>\n",
       "      <td>39.679229</td>\n",
       "      <td>college-view-south-platte</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                OFFENSE_TYPE_ID OFFENSE_CATEGORY_ID  \\\n",
       "REPORTED_DATE                                                         \n",
       "2014-06-29 02:01:00   traffic-accident-dui-duid    traffic-accident   \n",
       "2014-06-29 01:54:00  vehicular-eluding-no-chase    all-other-crimes   \n",
       "2014-06-29 02:00:00        disturbing-the-peace     public-disorder   \n",
       "2014-06-29 02:18:00                      curfew     public-disorder   \n",
       "2014-06-29 04:17:00          aggravated-assault  aggravated-assault   \n",
       "\n",
       "                        GEO_LON    GEO_LAT            NEIGHBORHOOD_ID  \\\n",
       "REPORTED_DATE                                                           \n",
       "2014-06-29 02:01:00 -105.000149  39.745753                        cbd   \n",
       "2014-06-29 01:54:00 -104.884660  39.738702                east-colfax   \n",
       "2014-06-29 02:00:00 -105.020719  39.706674                athmar-park   \n",
       "2014-06-29 02:18:00 -105.001552  39.769505                  sunnyside   \n",
       "2014-06-29 04:17:00 -105.018557  39.679229  college-view-south-platte   \n",
       "\n",
       "                     IS_CRIME  IS_TRAFFIC  \n",
       "REPORTED_DATE                              \n",
       "2014-06-29 02:01:00         0           1  \n",
       "2014-06-29 01:54:00         1           0  \n",
       "2014-06-29 02:00:00         1           0  \n",
       "2014-06-29 02:18:00         1           0  \n",
       "2014-06-29 04:17:00         1           0  "
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime = crime.set_index('REPORTED_DATE')\n",
    "crime.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "pd.options.display.max_rows = 4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2016-05-12 16:45:00</th>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.847024</td>\n",
       "      <td>39.779596</td>\n",
       "      <td>montbello</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-05-12 16:45:00</th>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-105.049180</td>\n",
       "      <td>39.769296</td>\n",
       "      <td>west-highland</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-05-12 16:45:00</th>\n",
       "      <td>fraud-identity-theft</td>\n",
       "      <td>white-collar-crime</td>\n",
       "      <td>-104.931971</td>\n",
       "      <td>39.717359</td>\n",
       "      <td>hilltop</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                          OFFENSE_TYPE_ID OFFENSE_CATEGORY_ID     GEO_LON  \\\n",
       "REPORTED_DATE                                                               \n",
       "2016-05-12 16:45:00      traffic-accident    traffic-accident -104.847024   \n",
       "2016-05-12 16:45:00      traffic-accident    traffic-accident -105.049180   \n",
       "2016-05-12 16:45:00  fraud-identity-theft  white-collar-crime -104.931971   \n",
       "\n",
       "                       GEO_LAT NEIGHBORHOOD_ID  IS_CRIME  IS_TRAFFIC  \n",
       "REPORTED_DATE                                                         \n",
       "2016-05-12 16:45:00  39.779596       montbello         0           1  \n",
       "2016-05-12 16:45:00  39.769296   west-highland         0           1  \n",
       "2016-05-12 16:45:00  39.717359         hilltop         1           0  "
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime.loc['2016-05-12 16:45:00']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2016-05-12 23:51:00</th>\n",
       "      <td>criminal-mischief-other</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>-105.017241</td>\n",
       "      <td>39.705845</td>\n",
       "      <td>athmar-park</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-05-12 18:40:00</th>\n",
       "      <td>liquor-possession</td>\n",
       "      <td>drug-alcohol</td>\n",
       "      <td>-104.995692</td>\n",
       "      <td>39.747875</td>\n",
       "      <td>cbd</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-05-12 15:59:00</th>\n",
       "      <td>menacing-felony-w-weap</td>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>-104.935172</td>\n",
       "      <td>39.723703</td>\n",
       "      <td>hilltop</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-05-12 16:39:00</th>\n",
       "      <td>assault-dv</td>\n",
       "      <td>other-crimes-against-persons</td>\n",
       "      <td>-104.974700</td>\n",
       "      <td>39.740555</td>\n",
       "      <td>north-capitol-hill</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>243 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                             OFFENSE_TYPE_ID           OFFENSE_CATEGORY_ID  \\\n",
       "REPORTED_DATE                                                                \n",
       "2016-05-12 23:51:00  criminal-mischief-other               public-disorder   \n",
       "2016-05-12 18:40:00        liquor-possession                  drug-alcohol   \n",
       "...                                      ...                           ...   \n",
       "2016-05-12 15:59:00   menacing-felony-w-weap            aggravated-assault   \n",
       "2016-05-12 16:39:00               assault-dv  other-crimes-against-persons   \n",
       "\n",
       "                        GEO_LON    GEO_LAT     NEIGHBORHOOD_ID  IS_CRIME  \\\n",
       "REPORTED_DATE                                                              \n",
       "2016-05-12 23:51:00 -105.017241  39.705845         athmar-park         1   \n",
       "2016-05-12 18:40:00 -104.995692  39.747875                 cbd         1   \n",
       "...                         ...        ...                 ...       ...   \n",
       "2016-05-12 15:59:00 -104.935172  39.723703             hilltop         1   \n",
       "2016-05-12 16:39:00 -104.974700  39.740555  north-capitol-hill         1   \n",
       "\n",
       "                     IS_TRAFFIC  \n",
       "REPORTED_DATE                    \n",
       "2016-05-12 23:51:00           0  \n",
       "2016-05-12 18:40:00           0  \n",
       "...                         ...  \n",
       "2016-05-12 15:59:00           0  \n",
       "2016-05-12 16:39:00           0  \n",
       "\n",
       "[243 rows x 7 columns]"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime.loc['2016-05-12']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(8012, 7)"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime.loc['2016-05'].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(91076, 7)"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime.loc['2016'].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4, 7)"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime.loc['2016-05-12 03'].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-12-01 00:48:00</th>\n",
       "      <td>drug-cocaine-possess</td>\n",
       "      <td>drug-alcohol</td>\n",
       "      <td>-104.891681</td>\n",
       "      <td>39.740155</td>\n",
       "      <td>east-colfax</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-01 00:48:00</th>\n",
       "      <td>theft-of-motor-vehicle</td>\n",
       "      <td>auto-theft</td>\n",
       "      <td>-104.891681</td>\n",
       "      <td>39.740155</td>\n",
       "      <td>east-colfax</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-31 23:45:00</th>\n",
       "      <td>violation-of-restraining-order</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>-105.034887</td>\n",
       "      <td>39.741827</td>\n",
       "      <td>west-colfax</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-12-31 23:50:00</th>\n",
       "      <td>weapon-poss-illegal-dangerous</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>-105.032769</td>\n",
       "      <td>39.709188</td>\n",
       "      <td>westwood</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6907 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                    OFFENSE_TYPE_ID OFFENSE_CATEGORY_ID  \\\n",
       "REPORTED_DATE                                                             \n",
       "2015-12-01 00:48:00            drug-cocaine-possess        drug-alcohol   \n",
       "2015-12-01 00:48:00          theft-of-motor-vehicle          auto-theft   \n",
       "...                                             ...                 ...   \n",
       "2015-12-31 23:45:00  violation-of-restraining-order    all-other-crimes   \n",
       "2015-12-31 23:50:00   weapon-poss-illegal-dangerous    all-other-crimes   \n",
       "\n",
       "                        GEO_LON    GEO_LAT NEIGHBORHOOD_ID  IS_CRIME  \\\n",
       "REPORTED_DATE                                                          \n",
       "2015-12-01 00:48:00 -104.891681  39.740155     east-colfax         1   \n",
       "2015-12-01 00:48:00 -104.891681  39.740155     east-colfax         1   \n",
       "...                         ...        ...             ...       ...   \n",
       "2015-12-31 23:45:00 -105.034887  39.741827     west-colfax         1   \n",
       "2015-12-31 23:50:00 -105.032769  39.709188        westwood         1   \n",
       "\n",
       "                     IS_TRAFFIC  \n",
       "REPORTED_DATE                    \n",
       "2015-12-01 00:48:00           0  \n",
       "2015-12-01 00:48:00           0  \n",
       "...                         ...  \n",
       "2015-12-31 23:45:00           0  \n",
       "2015-12-31 23:50:00           0  \n",
       "\n",
       "[6907 rows x 7 columns]"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime.loc['Dec 2015'].sort_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(252, 7)"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime.loc['2016 Sep, 15'].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4, 7)"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime.loc['21st October 2014 05'].shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-03-04 00:11:00</th>\n",
       "      <td>assault-dv</td>\n",
       "      <td>other-crimes-against-persons</td>\n",
       "      <td>-105.021966</td>\n",
       "      <td>39.770883</td>\n",
       "      <td>sunnyside</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04 00:19:00</th>\n",
       "      <td>assault-dv</td>\n",
       "      <td>other-crimes-against-persons</td>\n",
       "      <td>-104.978988</td>\n",
       "      <td>39.748799</td>\n",
       "      <td>five-points</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-01 23:45:00</th>\n",
       "      <td>drug-cocaine-possess</td>\n",
       "      <td>drug-alcohol</td>\n",
       "      <td>-104.987310</td>\n",
       "      <td>39.753598</td>\n",
       "      <td>five-points</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-01 23:48:00</th>\n",
       "      <td>drug-poss-paraphernalia</td>\n",
       "      <td>drug-alcohol</td>\n",
       "      <td>-104.986020</td>\n",
       "      <td>39.752541</td>\n",
       "      <td>five-points</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>75403 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                             OFFENSE_TYPE_ID           OFFENSE_CATEGORY_ID  \\\n",
       "REPORTED_DATE                                                                \n",
       "2015-03-04 00:11:00               assault-dv  other-crimes-against-persons   \n",
       "2015-03-04 00:19:00               assault-dv  other-crimes-against-persons   \n",
       "...                                      ...                           ...   \n",
       "2016-01-01 23:45:00     drug-cocaine-possess                  drug-alcohol   \n",
       "2016-01-01 23:48:00  drug-poss-paraphernalia                  drug-alcohol   \n",
       "\n",
       "                        GEO_LON    GEO_LAT NEIGHBORHOOD_ID  IS_CRIME  \\\n",
       "REPORTED_DATE                                                          \n",
       "2015-03-04 00:11:00 -105.021966  39.770883       sunnyside         1   \n",
       "2015-03-04 00:19:00 -104.978988  39.748799     five-points         1   \n",
       "...                         ...        ...             ...       ...   \n",
       "2016-01-01 23:45:00 -104.987310  39.753598     five-points         1   \n",
       "2016-01-01 23:48:00 -104.986020  39.752541     five-points         1   \n",
       "\n",
       "                     IS_TRAFFIC  \n",
       "REPORTED_DATE                    \n",
       "2015-03-04 00:11:00           0  \n",
       "2015-03-04 00:19:00           0  \n",
       "...                         ...  \n",
       "2016-01-01 23:45:00           0  \n",
       "2016-01-01 23:48:00           0  \n",
       "\n",
       "[75403 rows x 7 columns]"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime.loc['2015-3-4':'2016-1-1'].sort_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-03-04 22:25:00</th>\n",
       "      <td>traffic-accident-hit-and-run</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.973896</td>\n",
       "      <td>39.769064</td>\n",
       "      <td>five-points</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-03-04 22:30:00</th>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.906412</td>\n",
       "      <td>39.632816</td>\n",
       "      <td>hampden-south</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-01 23:40:00</th>\n",
       "      <td>robbery-business</td>\n",
       "      <td>robbery</td>\n",
       "      <td>-105.039236</td>\n",
       "      <td>39.726157</td>\n",
       "      <td>villa-park</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-01-01 23:45:00</th>\n",
       "      <td>drug-cocaine-possess</td>\n",
       "      <td>drug-alcohol</td>\n",
       "      <td>-104.987310</td>\n",
       "      <td>39.753598</td>\n",
       "      <td>five-points</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>75175 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                  OFFENSE_TYPE_ID OFFENSE_CATEGORY_ID  \\\n",
       "REPORTED_DATE                                                           \n",
       "2015-03-04 22:25:00  traffic-accident-hit-and-run    traffic-accident   \n",
       "2015-03-04 22:30:00              traffic-accident    traffic-accident   \n",
       "...                                           ...                 ...   \n",
       "2016-01-01 23:40:00              robbery-business             robbery   \n",
       "2016-01-01 23:45:00          drug-cocaine-possess        drug-alcohol   \n",
       "\n",
       "                        GEO_LON    GEO_LAT NEIGHBORHOOD_ID  IS_CRIME  \\\n",
       "REPORTED_DATE                                                          \n",
       "2015-03-04 22:25:00 -104.973896  39.769064     five-points         0   \n",
       "2015-03-04 22:30:00 -104.906412  39.632816   hampden-south         0   \n",
       "...                         ...        ...             ...       ...   \n",
       "2016-01-01 23:40:00 -105.039236  39.726157      villa-park         1   \n",
       "2016-01-01 23:45:00 -104.987310  39.753598     five-points         1   \n",
       "\n",
       "                     IS_TRAFFIC  \n",
       "REPORTED_DATE                    \n",
       "2015-03-04 22:25:00           1  \n",
       "2015-03-04 22:30:00           1  \n",
       "...                         ...  \n",
       "2016-01-01 23:40:00           0  \n",
       "2016-01-01 23:45:00           0  \n",
       "\n",
       "[75175 rows x 7 columns]"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime.loc['2015-3-4 22':'2016-1-1 23:45:00'].sort_index()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## How it works..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(29.4, 122.7)"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mem_cat = crime.memory_usage().sum()\n",
    "mem_obj = crime.astype({'OFFENSE_TYPE_ID':'object', \n",
    "                        'OFFENSE_CATEGORY_ID':'object', \n",
    "                        'NEIGHBORHOOD_ID':'object'}).memory_usage(deep=True)\\\n",
    "                                                    .sum()\n",
    "mb = 2 ** 20\n",
    "round(mem_cat / mb, 1), round(mem_obj / mb, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2014-06-29 02:01:00', '2014-06-29 01:54:00'], dtype='datetime64[ns]', name='REPORTED_DATE', freq=None)"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime.index[:2]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## There's more..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "42.4 ms ± 865 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit crime.loc['2015-3-4':'2016-1-1']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "crime_sort = crime.sort_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "840 µs ± 32.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit crime_sort.loc['2015-3-4':'2016-1-1']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "pd.options.display.max_rows = 60"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Using methods that only work with a DatetimeIndex"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.indexes.datetimes.DatetimeIndex'>\n"
     ]
    }
   ],
   "source": [
    "crime = pd.read_hdf('data/crime.h5', 'crime').set_index('REPORTED_DATE')\n",
    "print(type(crime.index))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2014-06-29 02:01:00</th>\n",
       "      <td>traffic-accident-dui-duid</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-105.000149</td>\n",
       "      <td>39.745753</td>\n",
       "      <td>cbd</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014-06-29 02:00:00</th>\n",
       "      <td>disturbing-the-peace</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>-105.020719</td>\n",
       "      <td>39.706674</td>\n",
       "      <td>athmar-park</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014-06-29 02:18:00</th>\n",
       "      <td>curfew</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>-105.001552</td>\n",
       "      <td>39.769505</td>\n",
       "      <td>sunnyside</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014-06-29 04:17:00</th>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>-105.018557</td>\n",
       "      <td>39.679229</td>\n",
       "      <td>college-view-south-platte</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014-06-29 04:22:00</th>\n",
       "      <td>violation-of-restraining-order</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>-104.972447</td>\n",
       "      <td>39.739449</td>\n",
       "      <td>cheesman-park</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                    OFFENSE_TYPE_ID OFFENSE_CATEGORY_ID  \\\n",
       "REPORTED_DATE                                                             \n",
       "2014-06-29 02:01:00       traffic-accident-dui-duid    traffic-accident   \n",
       "2014-06-29 02:00:00            disturbing-the-peace     public-disorder   \n",
       "2014-06-29 02:18:00                          curfew     public-disorder   \n",
       "2014-06-29 04:17:00              aggravated-assault  aggravated-assault   \n",
       "2014-06-29 04:22:00  violation-of-restraining-order    all-other-crimes   \n",
       "\n",
       "                        GEO_LON    GEO_LAT            NEIGHBORHOOD_ID  \\\n",
       "REPORTED_DATE                                                           \n",
       "2014-06-29 02:01:00 -105.000149  39.745753                        cbd   \n",
       "2014-06-29 02:00:00 -105.020719  39.706674                athmar-park   \n",
       "2014-06-29 02:18:00 -105.001552  39.769505                  sunnyside   \n",
       "2014-06-29 04:17:00 -105.018557  39.679229  college-view-south-platte   \n",
       "2014-06-29 04:22:00 -104.972447  39.739449              cheesman-park   \n",
       "\n",
       "                     IS_CRIME  IS_TRAFFIC  \n",
       "REPORTED_DATE                              \n",
       "2014-06-29 02:01:00         0           1  \n",
       "2014-06-29 02:00:00         1           0  \n",
       "2014-06-29 02:18:00         1           0  \n",
       "2014-06-29 04:17:00         1           0  \n",
       "2014-06-29 04:22:00         1           0  "
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime.between_time('2:00', '5:00', include_end=False).head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-11-26 05:47:00</th>\n",
       "      <td>criminal-mischief-other</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>-104.991476</td>\n",
       "      <td>39.751536</td>\n",
       "      <td>cbd</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-04-09 05:47:00</th>\n",
       "      <td>criminal-mischief-mtr-veh</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>-104.959394</td>\n",
       "      <td>39.678425</td>\n",
       "      <td>university</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-02-19 05:47:00</th>\n",
       "      <td>criminal-mischief-other</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>-104.986767</td>\n",
       "      <td>39.741336</td>\n",
       "      <td>north-capitol-hill</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-02-16 05:47:00</th>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>-104.934029</td>\n",
       "      <td>39.732320</td>\n",
       "      <td>hale</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-02-12 05:47:00</th>\n",
       "      <td>police-interference</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>-104.976306</td>\n",
       "      <td>39.722644</td>\n",
       "      <td>speer</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                               OFFENSE_TYPE_ID OFFENSE_CATEGORY_ID  \\\n",
       "REPORTED_DATE                                                        \n",
       "2013-11-26 05:47:00    criminal-mischief-other     public-disorder   \n",
       "2017-04-09 05:47:00  criminal-mischief-mtr-veh     public-disorder   \n",
       "2017-02-19 05:47:00    criminal-mischief-other     public-disorder   \n",
       "2017-02-16 05:47:00         aggravated-assault  aggravated-assault   \n",
       "2017-02-12 05:47:00        police-interference    all-other-crimes   \n",
       "\n",
       "                        GEO_LON    GEO_LAT     NEIGHBORHOOD_ID  IS_CRIME  \\\n",
       "REPORTED_DATE                                                              \n",
       "2013-11-26 05:47:00 -104.991476  39.751536                 cbd         1   \n",
       "2017-04-09 05:47:00 -104.959394  39.678425          university         1   \n",
       "2017-02-19 05:47:00 -104.986767  39.741336  north-capitol-hill         1   \n",
       "2017-02-16 05:47:00 -104.934029  39.732320                hale         1   \n",
       "2017-02-12 05:47:00 -104.976306  39.722644               speer         1   \n",
       "\n",
       "                     IS_TRAFFIC  \n",
       "REPORTED_DATE                    \n",
       "2013-11-26 05:47:00           0  \n",
       "2017-04-09 05:47:00           0  \n",
       "2017-02-19 05:47:00           0  \n",
       "2017-02-16 05:47:00           0  \n",
       "2017-02-12 05:47:00           0  "
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime.at_time('5:47').head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "crime_sort = crime.sort_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "pd.options.display.max_rows = 6"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>violation-of-restraining-order</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:16:00</th>\n",
       "      <td>traffic-accident-dui-duid</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.971851</td>\n",
       "      <td>39.736874</td>\n",
       "      <td>cheesman-park</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-30 23:50:00</th>\n",
       "      <td>criminal-mischief-mtr-veh</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>-104.838271</td>\n",
       "      <td>39.788683</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-30 23:54:00</th>\n",
       "      <td>traffic-accident-hit-and-run</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-105.014162</td>\n",
       "      <td>39.740439</td>\n",
       "      <td>lincoln-park</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-07-01 00:01:00</th>\n",
       "      <td>robbery-street</td>\n",
       "      <td>robbery</td>\n",
       "      <td>-104.924292</td>\n",
       "      <td>39.767585</td>\n",
       "      <td>northeast-park-hill</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>27489 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                    OFFENSE_TYPE_ID OFFENSE_CATEGORY_ID  \\\n",
       "REPORTED_DATE                                                             \n",
       "2012-01-02 00:06:00              aggravated-assault  aggravated-assault   \n",
       "2012-01-02 00:06:00  violation-of-restraining-order    all-other-crimes   \n",
       "2012-01-02 00:16:00       traffic-accident-dui-duid    traffic-accident   \n",
       "...                                             ...                 ...   \n",
       "2012-06-30 23:50:00       criminal-mischief-mtr-veh     public-disorder   \n",
       "2012-06-30 23:54:00    traffic-accident-hit-and-run    traffic-accident   \n",
       "2012-07-01 00:01:00                  robbery-street             robbery   \n",
       "\n",
       "                        GEO_LON    GEO_LAT      NEIGHBORHOOD_ID  IS_CRIME  \\\n",
       "REPORTED_DATE                                                               \n",
       "2012-01-02 00:06:00 -104.816860  39.796717            montbello         1   \n",
       "2012-01-02 00:06:00 -104.816860  39.796717            montbello         1   \n",
       "2012-01-02 00:16:00 -104.971851  39.736874        cheesman-park         0   \n",
       "...                         ...        ...                  ...       ...   \n",
       "2012-06-30 23:50:00 -104.838271  39.788683            montbello         1   \n",
       "2012-06-30 23:54:00 -105.014162  39.740439         lincoln-park         0   \n",
       "2012-07-01 00:01:00 -104.924292  39.767585  northeast-park-hill         1   \n",
       "\n",
       "                     IS_TRAFFIC  \n",
       "REPORTED_DATE                    \n",
       "2012-01-02 00:06:00           0  \n",
       "2012-01-02 00:06:00           0  \n",
       "2012-01-02 00:16:00           1  \n",
       "...                         ...  \n",
       "2012-06-30 23:50:00           0  \n",
       "2012-06-30 23:54:00           1  \n",
       "2012-07-01 00:01:00           0  \n",
       "\n",
       "[27489 rows x 7 columns]"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.first(pd.offsets.MonthBegin(6))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>violation-of-restraining-order</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:16:00</th>\n",
       "      <td>traffic-accident-dui-duid</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.971851</td>\n",
       "      <td>39.736874</td>\n",
       "      <td>cheesman-park</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-29 23:41:00</th>\n",
       "      <td>robbery-street</td>\n",
       "      <td>robbery</td>\n",
       "      <td>-104.991912</td>\n",
       "      <td>39.756163</td>\n",
       "      <td>five-points</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-29 23:57:00</th>\n",
       "      <td>assault-simple</td>\n",
       "      <td>other-crimes-against-persons</td>\n",
       "      <td>-104.987360</td>\n",
       "      <td>39.715162</td>\n",
       "      <td>speer</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-30 00:04:00</th>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.894697</td>\n",
       "      <td>39.628902</td>\n",
       "      <td>hampden-south</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>27332 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                    OFFENSE_TYPE_ID  \\\n",
       "REPORTED_DATE                                         \n",
       "2012-01-02 00:06:00              aggravated-assault   \n",
       "2012-01-02 00:06:00  violation-of-restraining-order   \n",
       "2012-01-02 00:16:00       traffic-accident-dui-duid   \n",
       "...                                             ...   \n",
       "2012-06-29 23:41:00                  robbery-street   \n",
       "2012-06-29 23:57:00                  assault-simple   \n",
       "2012-06-30 00:04:00                traffic-accident   \n",
       "\n",
       "                              OFFENSE_CATEGORY_ID     GEO_LON    GEO_LAT  \\\n",
       "REPORTED_DATE                                                              \n",
       "2012-01-02 00:06:00            aggravated-assault -104.816860  39.796717   \n",
       "2012-01-02 00:06:00              all-other-crimes -104.816860  39.796717   \n",
       "2012-01-02 00:16:00              traffic-accident -104.971851  39.736874   \n",
       "...                                           ...         ...        ...   \n",
       "2012-06-29 23:41:00                       robbery -104.991912  39.756163   \n",
       "2012-06-29 23:57:00  other-crimes-against-persons -104.987360  39.715162   \n",
       "2012-06-30 00:04:00              traffic-accident -104.894697  39.628902   \n",
       "\n",
       "                    NEIGHBORHOOD_ID  IS_CRIME  IS_TRAFFIC  \n",
       "REPORTED_DATE                                              \n",
       "2012-01-02 00:06:00       montbello         1           0  \n",
       "2012-01-02 00:06:00       montbello         1           0  \n",
       "2012-01-02 00:16:00   cheesman-park         0           1  \n",
       "...                             ...       ...         ...  \n",
       "2012-06-29 23:41:00     five-points         1           0  \n",
       "2012-06-29 23:57:00           speer         1           0  \n",
       "2012-06-30 00:04:00   hampden-south         0           1  \n",
       "\n",
       "[27332 rows x 7 columns]"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.first(pd.offsets.MonthEnd(6))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>violation-of-restraining-order</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:16:00</th>\n",
       "      <td>traffic-accident-dui-duid</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.971851</td>\n",
       "      <td>39.736874</td>\n",
       "      <td>cheesman-park</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-30 23:44:00</th>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.987578</td>\n",
       "      <td>39.711158</td>\n",
       "      <td>baker</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-30 23:50:00</th>\n",
       "      <td>criminal-mischief-mtr-veh</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>-104.838271</td>\n",
       "      <td>39.788683</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-30 23:54:00</th>\n",
       "      <td>traffic-accident-hit-and-run</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-105.014162</td>\n",
       "      <td>39.740439</td>\n",
       "      <td>lincoln-park</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>27488 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                    OFFENSE_TYPE_ID OFFENSE_CATEGORY_ID  \\\n",
       "REPORTED_DATE                                                             \n",
       "2012-01-02 00:06:00              aggravated-assault  aggravated-assault   \n",
       "2012-01-02 00:06:00  violation-of-restraining-order    all-other-crimes   \n",
       "2012-01-02 00:16:00       traffic-accident-dui-duid    traffic-accident   \n",
       "...                                             ...                 ...   \n",
       "2012-06-30 23:44:00                traffic-accident    traffic-accident   \n",
       "2012-06-30 23:50:00       criminal-mischief-mtr-veh     public-disorder   \n",
       "2012-06-30 23:54:00    traffic-accident-hit-and-run    traffic-accident   \n",
       "\n",
       "                        GEO_LON    GEO_LAT NEIGHBORHOOD_ID  IS_CRIME  \\\n",
       "REPORTED_DATE                                                          \n",
       "2012-01-02 00:06:00 -104.816860  39.796717       montbello         1   \n",
       "2012-01-02 00:06:00 -104.816860  39.796717       montbello         1   \n",
       "2012-01-02 00:16:00 -104.971851  39.736874   cheesman-park         0   \n",
       "...                         ...        ...             ...       ...   \n",
       "2012-06-30 23:44:00 -104.987578  39.711158           baker         0   \n",
       "2012-06-30 23:50:00 -104.838271  39.788683       montbello         1   \n",
       "2012-06-30 23:54:00 -105.014162  39.740439    lincoln-park         0   \n",
       "\n",
       "                     IS_TRAFFIC  \n",
       "REPORTED_DATE                    \n",
       "2012-01-02 00:06:00           0  \n",
       "2012-01-02 00:06:00           0  \n",
       "2012-01-02 00:16:00           1  \n",
       "...                         ...  \n",
       "2012-06-30 23:44:00           1  \n",
       "2012-06-30 23:50:00           0  \n",
       "2012-06-30 23:54:00           1  \n",
       "\n",
       "[27488 rows x 7 columns]"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.first(pd.offsets.MonthBegin(6, normalize=True))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>violation-of-restraining-order</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:16:00</th>\n",
       "      <td>traffic-accident-dui-duid</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.971851</td>\n",
       "      <td>39.736874</td>\n",
       "      <td>cheesman-park</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-30 23:44:00</th>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.987578</td>\n",
       "      <td>39.711158</td>\n",
       "      <td>baker</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-30 23:50:00</th>\n",
       "      <td>criminal-mischief-mtr-veh</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>-104.838271</td>\n",
       "      <td>39.788683</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-30 23:54:00</th>\n",
       "      <td>traffic-accident-hit-and-run</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-105.014162</td>\n",
       "      <td>39.740439</td>\n",
       "      <td>lincoln-park</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>27488 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                    OFFENSE_TYPE_ID OFFENSE_CATEGORY_ID  \\\n",
       "REPORTED_DATE                                                             \n",
       "2012-01-02 00:06:00              aggravated-assault  aggravated-assault   \n",
       "2012-01-02 00:06:00  violation-of-restraining-order    all-other-crimes   \n",
       "2012-01-02 00:16:00       traffic-accident-dui-duid    traffic-accident   \n",
       "...                                             ...                 ...   \n",
       "2012-06-30 23:44:00                traffic-accident    traffic-accident   \n",
       "2012-06-30 23:50:00       criminal-mischief-mtr-veh     public-disorder   \n",
       "2012-06-30 23:54:00    traffic-accident-hit-and-run    traffic-accident   \n",
       "\n",
       "                        GEO_LON    GEO_LAT NEIGHBORHOOD_ID  IS_CRIME  \\\n",
       "REPORTED_DATE                                                          \n",
       "2012-01-02 00:06:00 -104.816860  39.796717       montbello         1   \n",
       "2012-01-02 00:06:00 -104.816860  39.796717       montbello         1   \n",
       "2012-01-02 00:16:00 -104.971851  39.736874   cheesman-park         0   \n",
       "...                         ...        ...             ...       ...   \n",
       "2012-06-30 23:44:00 -104.987578  39.711158           baker         0   \n",
       "2012-06-30 23:50:00 -104.838271  39.788683       montbello         1   \n",
       "2012-06-30 23:54:00 -105.014162  39.740439    lincoln-park         0   \n",
       "\n",
       "                     IS_TRAFFIC  \n",
       "REPORTED_DATE                    \n",
       "2012-01-02 00:06:00           0  \n",
       "2012-01-02 00:06:00           0  \n",
       "2012-01-02 00:16:00           1  \n",
       "...                         ...  \n",
       "2012-06-30 23:44:00           1  \n",
       "2012-06-30 23:50:00           0  \n",
       "2012-06-30 23:54:00           1  \n",
       "\n",
       "[27488 rows x 7 columns]"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.loc[:'2012-06']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>violation-of-restraining-order</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:16:00</th>\n",
       "      <td>traffic-accident-dui-duid</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.971851</td>\n",
       "      <td>39.736874</td>\n",
       "      <td>cheesman-park</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-06 23:30:00</th>\n",
       "      <td>assault-dv</td>\n",
       "      <td>other-crimes-against-persons</td>\n",
       "      <td>-104.958983</td>\n",
       "      <td>39.674135</td>\n",
       "      <td>university-park</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-06 23:44:00</th>\n",
       "      <td>theft-of-motor-vehicle</td>\n",
       "      <td>auto-theft</td>\n",
       "      <td>-104.845356</td>\n",
       "      <td>39.794035</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-06 23:55:00</th>\n",
       "      <td>threats-to-injure</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>-105.004788</td>\n",
       "      <td>39.708714</td>\n",
       "      <td>athmar-park</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>605 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                    OFFENSE_TYPE_ID  \\\n",
       "REPORTED_DATE                                         \n",
       "2012-01-02 00:06:00              aggravated-assault   \n",
       "2012-01-02 00:06:00  violation-of-restraining-order   \n",
       "2012-01-02 00:16:00       traffic-accident-dui-duid   \n",
       "...                                             ...   \n",
       "2012-01-06 23:30:00                      assault-dv   \n",
       "2012-01-06 23:44:00          theft-of-motor-vehicle   \n",
       "2012-01-06 23:55:00               threats-to-injure   \n",
       "\n",
       "                              OFFENSE_CATEGORY_ID     GEO_LON    GEO_LAT  \\\n",
       "REPORTED_DATE                                                              \n",
       "2012-01-02 00:06:00            aggravated-assault -104.816860  39.796717   \n",
       "2012-01-02 00:06:00              all-other-crimes -104.816860  39.796717   \n",
       "2012-01-02 00:16:00              traffic-accident -104.971851  39.736874   \n",
       "...                                           ...         ...        ...   \n",
       "2012-01-06 23:30:00  other-crimes-against-persons -104.958983  39.674135   \n",
       "2012-01-06 23:44:00                    auto-theft -104.845356  39.794035   \n",
       "2012-01-06 23:55:00               public-disorder -105.004788  39.708714   \n",
       "\n",
       "                     NEIGHBORHOOD_ID  IS_CRIME  IS_TRAFFIC  \n",
       "REPORTED_DATE                                               \n",
       "2012-01-02 00:06:00        montbello         1           0  \n",
       "2012-01-02 00:06:00        montbello         1           0  \n",
       "2012-01-02 00:16:00    cheesman-park         0           1  \n",
       "...                              ...       ...         ...  \n",
       "2012-01-06 23:30:00  university-park         1           0  \n",
       "2012-01-06 23:44:00        montbello         1           0  \n",
       "2012-01-06 23:55:00      athmar-park         1           0  \n",
       "\n",
       "[605 rows x 7 columns]"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.first('5D')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>violation-of-restraining-order</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:16:00</th>\n",
       "      <td>traffic-accident-dui-duid</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.971851</td>\n",
       "      <td>39.736874</td>\n",
       "      <td>cheesman-park</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-08 23:52:00</th>\n",
       "      <td>theft-other</td>\n",
       "      <td>larceny</td>\n",
       "      <td>-104.968227</td>\n",
       "      <td>39.739752</td>\n",
       "      <td>cheesman-park</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-09 00:04:00</th>\n",
       "      <td>traffic-accident-hit-and-run</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.973343</td>\n",
       "      <td>39.760757</td>\n",
       "      <td>five-points</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-09 00:05:00</th>\n",
       "      <td>fraud-criminal-impersonation</td>\n",
       "      <td>white-collar-crime</td>\n",
       "      <td>-105.024676</td>\n",
       "      <td>39.712702</td>\n",
       "      <td>valverde</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>879 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                    OFFENSE_TYPE_ID OFFENSE_CATEGORY_ID  \\\n",
       "REPORTED_DATE                                                             \n",
       "2012-01-02 00:06:00              aggravated-assault  aggravated-assault   \n",
       "2012-01-02 00:06:00  violation-of-restraining-order    all-other-crimes   \n",
       "2012-01-02 00:16:00       traffic-accident-dui-duid    traffic-accident   \n",
       "...                                             ...                 ...   \n",
       "2012-01-08 23:52:00                     theft-other             larceny   \n",
       "2012-01-09 00:04:00    traffic-accident-hit-and-run    traffic-accident   \n",
       "2012-01-09 00:05:00    fraud-criminal-impersonation  white-collar-crime   \n",
       "\n",
       "                        GEO_LON    GEO_LAT NEIGHBORHOOD_ID  IS_CRIME  \\\n",
       "REPORTED_DATE                                                          \n",
       "2012-01-02 00:06:00 -104.816860  39.796717       montbello         1   \n",
       "2012-01-02 00:06:00 -104.816860  39.796717       montbello         1   \n",
       "2012-01-02 00:16:00 -104.971851  39.736874   cheesman-park         0   \n",
       "...                         ...        ...             ...       ...   \n",
       "2012-01-08 23:52:00 -104.968227  39.739752   cheesman-park         1   \n",
       "2012-01-09 00:04:00 -104.973343  39.760757     five-points         0   \n",
       "2012-01-09 00:05:00 -105.024676  39.712702        valverde         1   \n",
       "\n",
       "                     IS_TRAFFIC  \n",
       "REPORTED_DATE                    \n",
       "2012-01-02 00:06:00           0  \n",
       "2012-01-02 00:06:00           0  \n",
       "2012-01-02 00:16:00           1  \n",
       "...                         ...  \n",
       "2012-01-08 23:52:00           0  \n",
       "2012-01-09 00:04:00           1  \n",
       "2012-01-09 00:05:00           0  \n",
       "\n",
       "[879 rows x 7 columns]"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.first('5B')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>violation-of-restraining-order</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:16:00</th>\n",
       "      <td>traffic-accident-dui-duid</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.971851</td>\n",
       "      <td>39.736874</td>\n",
       "      <td>cheesman-park</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-02-18 22:20:00</th>\n",
       "      <td>traffic-accident-dui-duid</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.919946</td>\n",
       "      <td>39.761917</td>\n",
       "      <td>north-park-hill</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-02-18 22:44:00</th>\n",
       "      <td>criminal-mischief-mtr-veh</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>-105.044984</td>\n",
       "      <td>39.736776</td>\n",
       "      <td>west-colfax</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-02-18 23:27:00</th>\n",
       "      <td>theft-items-from-vehicle</td>\n",
       "      <td>theft-from-motor-vehicle</td>\n",
       "      <td>-105.009018</td>\n",
       "      <td>39.708701</td>\n",
       "      <td>athmar-park</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6708 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                    OFFENSE_TYPE_ID       OFFENSE_CATEGORY_ID  \\\n",
       "REPORTED_DATE                                                                   \n",
       "2012-01-02 00:06:00              aggravated-assault        aggravated-assault   \n",
       "2012-01-02 00:06:00  violation-of-restraining-order          all-other-crimes   \n",
       "2012-01-02 00:16:00       traffic-accident-dui-duid          traffic-accident   \n",
       "...                                             ...                       ...   \n",
       "2012-02-18 22:20:00       traffic-accident-dui-duid          traffic-accident   \n",
       "2012-02-18 22:44:00       criminal-mischief-mtr-veh           public-disorder   \n",
       "2012-02-18 23:27:00        theft-items-from-vehicle  theft-from-motor-vehicle   \n",
       "\n",
       "                        GEO_LON    GEO_LAT  NEIGHBORHOOD_ID  IS_CRIME  \\\n",
       "REPORTED_DATE                                                           \n",
       "2012-01-02 00:06:00 -104.816860  39.796717        montbello         1   \n",
       "2012-01-02 00:06:00 -104.816860  39.796717        montbello         1   \n",
       "2012-01-02 00:16:00 -104.971851  39.736874    cheesman-park         0   \n",
       "...                         ...        ...              ...       ...   \n",
       "2012-02-18 22:20:00 -104.919946  39.761917  north-park-hill         0   \n",
       "2012-02-18 22:44:00 -105.044984  39.736776      west-colfax         1   \n",
       "2012-02-18 23:27:00 -105.009018  39.708701      athmar-park         1   \n",
       "\n",
       "                     IS_TRAFFIC  \n",
       "REPORTED_DATE                    \n",
       "2012-01-02 00:06:00           0  \n",
       "2012-01-02 00:06:00           0  \n",
       "2012-01-02 00:16:00           1  \n",
       "...                         ...  \n",
       "2012-02-18 22:20:00           1  \n",
       "2012-02-18 22:44:00           0  \n",
       "2012-02-18 23:27:00           0  \n",
       "\n",
       "[6708 rows x 7 columns]"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.first('7W')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:06:00</th>\n",
       "      <td>violation-of-restraining-order</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>-104.816860</td>\n",
       "      <td>39.796717</td>\n",
       "      <td>montbello</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-01-02 00:16:00</th>\n",
       "      <td>traffic-accident-dui-duid</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-104.971851</td>\n",
       "      <td>39.736874</td>\n",
       "      <td>cheesman-park</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-09-30 23:29:00</th>\n",
       "      <td>theft-of-motor-vehicle</td>\n",
       "      <td>auto-theft</td>\n",
       "      <td>-104.988838</td>\n",
       "      <td>39.686925</td>\n",
       "      <td>overland</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-09-30 23:41:00</th>\n",
       "      <td>traffic-accident-hit-and-run</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-105.087598</td>\n",
       "      <td>39.638462</td>\n",
       "      <td>marston</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-09-30 23:43:00</th>\n",
       "      <td>robbery-business</td>\n",
       "      <td>robbery</td>\n",
       "      <td>-104.772712</td>\n",
       "      <td>39.781966</td>\n",
       "      <td>gateway-green-valley-ranch</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>43045 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                    OFFENSE_TYPE_ID OFFENSE_CATEGORY_ID  \\\n",
       "REPORTED_DATE                                                             \n",
       "2012-01-02 00:06:00              aggravated-assault  aggravated-assault   \n",
       "2012-01-02 00:06:00  violation-of-restraining-order    all-other-crimes   \n",
       "2012-01-02 00:16:00       traffic-accident-dui-duid    traffic-accident   \n",
       "...                                             ...                 ...   \n",
       "2012-09-30 23:29:00          theft-of-motor-vehicle          auto-theft   \n",
       "2012-09-30 23:41:00    traffic-accident-hit-and-run    traffic-accident   \n",
       "2012-09-30 23:43:00                robbery-business             robbery   \n",
       "\n",
       "                        GEO_LON    GEO_LAT             NEIGHBORHOOD_ID  \\\n",
       "REPORTED_DATE                                                            \n",
       "2012-01-02 00:06:00 -104.816860  39.796717                   montbello   \n",
       "2012-01-02 00:06:00 -104.816860  39.796717                   montbello   \n",
       "2012-01-02 00:16:00 -104.971851  39.736874               cheesman-park   \n",
       "...                         ...        ...                         ...   \n",
       "2012-09-30 23:29:00 -104.988838  39.686925                    overland   \n",
       "2012-09-30 23:41:00 -105.087598  39.638462                     marston   \n",
       "2012-09-30 23:43:00 -104.772712  39.781966  gateway-green-valley-ranch   \n",
       "\n",
       "                     IS_CRIME  IS_TRAFFIC  \n",
       "REPORTED_DATE                              \n",
       "2012-01-02 00:06:00         1           0  \n",
       "2012-01-02 00:06:00         1           0  \n",
       "2012-01-02 00:16:00         0           1  \n",
       "...                       ...         ...  \n",
       "2012-09-30 23:29:00         1           0  \n",
       "2012-09-30 23:41:00         0           1  \n",
       "2012-09-30 23:43:00         1           0  \n",
       "\n",
       "[43045 rows x 7 columns]"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.first('3QS')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## How it works..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2014-06-29 02:01:00</th>\n",
       "      <td>traffic-accident-dui-duid</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-105.000149</td>\n",
       "      <td>39.745753</td>\n",
       "      <td>cbd</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014-06-29 02:00:00</th>\n",
       "      <td>disturbing-the-peace</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>-105.020719</td>\n",
       "      <td>39.706674</td>\n",
       "      <td>athmar-park</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014-06-29 02:18:00</th>\n",
       "      <td>curfew</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>-105.001552</td>\n",
       "      <td>39.769505</td>\n",
       "      <td>sunnyside</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-09-13 02:21:00</th>\n",
       "      <td>assault-simple</td>\n",
       "      <td>other-crimes-against-persons</td>\n",
       "      <td>-104.925733</td>\n",
       "      <td>39.654184</td>\n",
       "      <td>university-hills</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-09-13 03:21:00</th>\n",
       "      <td>traffic-accident-dui-duid</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-105.010711</td>\n",
       "      <td>39.757385</td>\n",
       "      <td>highland</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017-09-13 02:15:00</th>\n",
       "      <td>traffic-accident-hit-and-run</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>-105.043950</td>\n",
       "      <td>39.787436</td>\n",
       "      <td>regis</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>29078 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                  OFFENSE_TYPE_ID  \\\n",
       "REPORTED_DATE                                       \n",
       "2014-06-29 02:01:00     traffic-accident-dui-duid   \n",
       "2014-06-29 02:00:00          disturbing-the-peace   \n",
       "2014-06-29 02:18:00                        curfew   \n",
       "...                                           ...   \n",
       "2017-09-13 02:21:00                assault-simple   \n",
       "2017-09-13 03:21:00     traffic-accident-dui-duid   \n",
       "2017-09-13 02:15:00  traffic-accident-hit-and-run   \n",
       "\n",
       "                              OFFENSE_CATEGORY_ID     GEO_LON    GEO_LAT  \\\n",
       "REPORTED_DATE                                                              \n",
       "2014-06-29 02:01:00              traffic-accident -105.000149  39.745753   \n",
       "2014-06-29 02:00:00               public-disorder -105.020719  39.706674   \n",
       "2014-06-29 02:18:00               public-disorder -105.001552  39.769505   \n",
       "...                                           ...         ...        ...   \n",
       "2017-09-13 02:21:00  other-crimes-against-persons -104.925733  39.654184   \n",
       "2017-09-13 03:21:00              traffic-accident -105.010711  39.757385   \n",
       "2017-09-13 02:15:00              traffic-accident -105.043950  39.787436   \n",
       "\n",
       "                      NEIGHBORHOOD_ID  IS_CRIME  IS_TRAFFIC  \n",
       "REPORTED_DATE                                                \n",
       "2014-06-29 02:01:00               cbd         0           1  \n",
       "2014-06-29 02:00:00       athmar-park         1           0  \n",
       "2014-06-29 02:18:00         sunnyside         1           0  \n",
       "...                               ...       ...         ...  \n",
       "2017-09-13 02:21:00  university-hills         1           0  \n",
       "2017-09-13 03:21:00          highland         0           1  \n",
       "2017-09-13 02:15:00             regis         0           1  \n",
       "\n",
       "[29078 rows x 7 columns]"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import datetime\n",
    "crime.between_time(datetime.time(2,0), datetime.time(5,0), include_end=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2012-01-02 00:06:00')"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "first_date = crime_sort.index[0]\n",
    "first_date"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2012-07-01 00:06:00')"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "first_date + pd.offsets.MonthBegin(6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2012-06-30 00:06:00')"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "first_date + pd.offsets.MonthEnd(6)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## There's more..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2012-02-16 13:40:00')"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt = pd.Timestamp('2012-1-16 13:40')\n",
    "dt + pd.DateOffset(months=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2014-06-25 11:22:10')"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "do = pd.DateOffset(years=2, months=5, days=3, hours=8, seconds=10)\n",
    "pd.Timestamp('2012-1-22 03:22') + do"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "pd.options.display.max_rows=60"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Counting the number of weekly crimes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "crime_sort = pd.read_hdf('data/crime.h5', 'crime') \\\n",
    "               .set_index('REPORTED_DATE') \\\n",
    "               .sort_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndexResampler [freq=<Week: weekday=6>, axis=0, closed=right, label=right, convention=start, base=0]"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.resample('W')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "REPORTED_DATE\n",
       "2012-01-08     877\n",
       "2012-01-15    1071\n",
       "2012-01-22     991\n",
       "2012-01-29     988\n",
       "2012-02-05     888\n",
       "Freq: W-SUN, dtype: int64"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "weekly_crimes = crime_sort.resample('W').size()\n",
    "weekly_crimes.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "877"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(crime_sort.loc[:'2012-1-8'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1071"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(crime_sort.loc['2012-1-9':'2012-1-15'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "REPORTED_DATE\n",
       "2012-01-05     462\n",
       "2012-01-12    1116\n",
       "2012-01-19     924\n",
       "2012-01-26    1061\n",
       "2012-02-02     926\n",
       "Freq: W-THU, dtype: int64"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.resample('W-THU').size().head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "REPORTED_DATE\n",
       "2012-01-08     877\n",
       "2012-01-15    1071\n",
       "2012-01-22     991\n",
       "2012-01-29     988\n",
       "2012-02-05     888\n",
       "Freq: W-SUN, dtype: int64"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "weekly_crimes_gby = crime_sort.groupby(pd.Grouper(freq='W')).size()\n",
    "weekly_crimes_gby.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "weekly_crimes.equals(weekly_crimes_gby)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## How it works..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['agg', 'aggregate', 'apply', 'asfreq', 'ax', 'backfill', 'bfill', 'count', 'ffill', 'fillna', 'first', 'get_group', 'groups', 'indices', 'interpolate', 'last', 'max', 'mean', 'median', 'min', 'ndim', 'ngroups', 'nunique', 'obj', 'ohlc', 'pad', 'plot', 'prod', 'sem', 'size', 'std', 'sum', 'transform', 'var']\n"
     ]
    }
   ],
   "source": [
    "r = crime_sort.resample('W')\n",
    "resample_methods = [attr for attr in dir(r) if attr[0].islower()]\n",
    "print(resample_methods)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## There's more..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime = pd.read_hdf('data/crime.h5', 'crime')\n",
    "weekly_crimes2 = crime.resample('W', on='REPORTED_DATE').size()\n",
    "weekly_crimes2.equals(weekly_crimes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "weekly_crimes_gby2 = crime.groupby(pd.Grouper(key='REPORTED_DATE', freq='W')).size()\n",
    "weekly_crimes_gby2.equals(weekly_crimes_gby)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x10b8d3240>"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA64AAAEXCAYAAACtXBnmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xd4m/W5P/73R8sa1vTeM3tPwp6F\nUmiBLgql0NN1vi1tTzmd53Baft2btnRCgVJaSgeFpqXsFbJISOLs4XjvIVl7j8/vj2dYsmVbUuQR\ncr+uKxeOLEuPiSw/93MvxjkHIYQQQgghhBCyUCnm+wAIIYQQQgghhJDpUOBKCCGEEEIIIWRBo8CV\nEEIIIYQQQsiCRoErIYQQQgghhJAFjQJXQgghhBBCCCELGgWuhBBCCCGEEEIWNApcCSGEvCUxxh5h\njH1L/PgyxljffB/TQsIY8zHGGuf7OAghhJBMUOBKCCHkrMYYe40x5mSMFZzBY3DGmF8M5hyMsZcZ\nYzfn8zhnE2OsgjH2EGNskDHmZYydZIx9nTFmmOprOOeFnPOOuTxOQgghJFcUuBJCCDlrMcbqAVwM\ngAN41xk+3BrOeSGAJQAeAfALxtg9Z/iYecUYU6W5zQZgNwAdgPM550YAbwNgAdCUyWMQQgghCx0F\nroQQQs5mtwN4A0KgeUc+HpBzbuec/wHAJwH8D2OsCAAYY+akrGY/Y+xbjDGl+LkPM8Z2MMZ+JGZ/\nOxlj14qf+wBjbF/yczDG7mKM/VP8uED8uh7G2DBj7DeMMZ34ucsYY32MsS8zxoYA/C7NIf83AC+A\n2zjnXeL30Ms5/y/O+WHxcThj7E7G2GkAp5NuaxY/foQx9ivG2LNi1nknY6ycMfZT8fs5yRhbl3T8\nlYyxvzPGRsXv9bNJn9vMGNvHGPOI38+9Z/6vQggh5FxHgSshhJCz2e0AHhP/XMMYK8vjY28FoAKw\nWfz77wHEADQDWAfgagAfS7r/eQBOASgG8AMADzHGGIB/AljCGFuUdN9bAfxJ/Pj7ABYDWCs+dhWA\nryXdtxyADUAdgE+kOc6rADzJOU/M8P3cKB7j8ik+/34A/ycefxhCFveA+PcnANwLAIwxBYB/ATgk\nHuuVAD7HGLtGfJyfAfgZ59wEIeP71xmOixBCCJkRBa6EEELOSoyxiyAEc3/lnO8H0A4hIMwLznkU\ngB2ATQyIrwXwOc65n3M+AuAnAD6Q9CXdnPPfcs7jEILcCgBlnPMAhCD4FvG4FwFYCuCfYmD7cQB3\ncc7HOOdeAN+Z8LgJAPdwzsOc82CaQy0CMJjBt/Rd8TnSPQYAPMU53885DwF4CkCIc/6o+P38BUKw\nDgCbAJRwzr/BOY+IfbK/TTrmKIBmxlgx59zHOX8jg2MjhBBCpkWBKyGEkLPVHQBe4Jzbxb//CXkq\nFwYAxpgaQAmAMQgBshrAIGPMxRhzAbgfQGnSlwxJH4jBKgAUJh3bLeLHtwL4h3ifEgB6APuTHvc5\n8XbJqBhMTsUBIUieSe8Mnx9O+jiY5u/S91IHoFI6XvGY/xeAlO3+KIQM8knG2JuMseszODZCCCFk\nWjSggRBCyFlH7AF9PwCl2PsJAAUALIyxNZzzQ3l4mhsglAbvBaCBUD5bzDmP5fBYLwAoZoythRDA\n3iXebocQFK7gnPdP8bV8hsd+CcBNjLGvz1AuPNPjZKoXQCfnfFG6T3LOTwO4RSwpfjeAJxhjRZxz\nf56enxBCyDmIMq6EEELORjcCiEPo11wr/lkGYDuEvtecMcZsjLEPAvglgO9zzh2c80EIweePGWMm\nxpiCMdbEGLs0k8cUg90nAPwQQr/qi+LtCQhltj9hjJWKz1+V1C+aiXsBmAD8njFWl/QY9zLGVmfx\nOJnaC8AjDozSMcaUjLGVjLFN4nPfxhgrEb83l/g18Vk4DkIIIecQClwJIYScje4A8DvOeQ/nfEj6\nA+AXAD6Y48qXQ4wxH4A2CEOX7uKcJw9Juh1C5vU4ACeEQDSTEl3JnyAMUvrbhKztl8XnfIMx5oGQ\nQV2S6YNyzscAXACht3QPY8wL4GUAbvFx80rseX0nhIsFnRCyxg8CMIt3eTuAY+L/y58B+MAMpc6E\nEELIjBjn+aocIoQQQgghhBBC8o8yroQQQgghhBBCFjQKXAkhhBBCCCGELGgUuBJCCCGEEEIIWdAo\ncCWEEEIIIYQQsqAt6D2uxcXFvL6+fr4PgxBCCCGEEELILNi/f7+dc14y0/0WdOBaX1+Pffv2zfdh\nEEIIIYQQQgiZBYyx7kzuR6XChBBCCCGEEEIWNApcCSGEEEIIIYQsaBS4EkIIIYQQQghZ0ChwJYQQ\nQgghhBCyoFHgSgghhBBCCCFkQaPAlRBCCCGEEELIgkaBKyGEEEIIIYSQBY0CV0IIIYQQQgghOfGF\nY9jZZp/156HAlRBCCCGEEEJITv74Rjc++OAedDv8s/o8MwaujLEaxtirjLETjLFjjLH/Em+3McZe\nZIydFv9rFW9njLH7GGNtjLHDjLH1SY91h3j/04yxO2bv2yKEEEIIIYQQMtuODXgAALvaHbP6PJlk\nXGMAPs85XwZgC4A7GWPLAXwFwMuc80UAXhb/DgDXAlgk/vkEgF8DQqAL4B4A5wHYDOAeKdglhBBC\nCCGEEHL2OTW0QAJXzvkg5/yA+LEXwAkAVQBuAPB78W6/B3Cj+PENAB7lgjcAWBhjFQCuAfAi53yM\nc+4E8CKAt+f1uyGEEEIIIYQQMifCsTjaR4US4d3tdnDOZ+25supxZYzVA1gHYA+AMs75ICAEtwBK\nxbtVAehN+rI+8bapbp/4HJ9gjO1jjO0bHR3N5vAIIYQQQgghhMyRthEf4gmOSxaXwO6L4PSIb9ae\nK+PAlTFWCODvAD7HOfdMd9c0t/Fpbk+9gfMHOOcbOecbS0pKMj08QgghhBBCCCFz6OSgFwDwHxfW\nAwB2zeJ04YwCV8aYGkLQ+hjn/Enx5mGxBBjif0fE2/sA1CR9eTWAgWluJ4QQQgghhBByljk17IVG\npcDFzcWoselmtc81k6nCDMBDAE5wzu9N+tQ/AUiTge8AsDXp9tvF6cJbALjFUuLnAVzNGLOKQ5mu\nFm8jhBBCCCGEEHKWOTHoweKyQqiUClzQWIw3OhyIJyb3uYaicbSPnlkZcSYZ1wsBfAjAFYyxg+Kf\ndwD4HoC3McZOA3ib+HcAeAZAB4A2AL8F8CkA4JyPAfgmgDfFP98QbyOEEEIIIYQQssDEExwd0wSc\nJ4e8WFJmAgBc0FwETyiGYwPuSfd7bE8P3vGz7QhEYjkfi2qmO3DOdyB9fyoAXJnm/hzAnVM81sMA\nHs7mAAkhhBBCCCGEzL2tB/vxxScOY+eXr0C5WZvyOYcvjFFvGMsqjACA85uKAAhrcVZXW1LuO+gK\nIhxLoM8ZxOIyY07HktVUYUIIIYQQQggh54bjAx7EExynR7yTPndqSLhtabmQcS01arGotDBtn6sr\nGAUA9DkDOR8LBa6EEEIIIYQQsoB1O/zY8M0X0ZYmgJxNnXZhR2uX+N9kJ8TAdUn5eAb1gqYivNk5\nhmg8kXJfV0AKXIM5HwsFroQQQgghc6TT7oc/nHuPFyHk3NQ67IPDH8G21tlbN5OOFLh22idnSk8O\nelBcqEGJsUC+bXG5EcFoHA5fJOW+roDw994xyrgSQgghhCxooWgc19+3Hb/Z1j7fh0LIJN/+93F8\n99kT830YZApS4Hew1zVnzxmNJ9AjBprdjskZ11PDXrlMWGLTawAAY/4JgWuQMq6EEEIIIWeFYwMe\n+CNxtA7PbakfIZl49dQoXj05Mt+HQabgFgO/lh7nnD1n71gAsQSHUsHQOSFwjSc4Tg15U8qEAcBq\nEAJXZ2BixpUCV0IIIYSQWffg9g683jp6Ro8hnXB2O3IvlSNktgy5Qxhwheb7MMgUkgO/UW94Tp5T\nKhPeWGcVgtikvtUuhx/hWAJLJwSutjSBK+cc7qBYKkzDmQghhBBCZgfnHD95sRV/frPnjB6nRSzx\n6xkLQNgeSMjC4A1F4QvH4AvH4AlF5/twSBqu4HggOFflwlLgesXSUkTjPOXCxslBoXJkWUVqqbBF\nrwYAOJNKhQOROKJxDptBA1cgCm+OrzEKXAkhhBBCpuEJxuCPxDHoPrNs1MEeFxRMOImzTxhcQsh8\nGvaMv7YHXJmVcn76TwfwkUfepEB3jrgCUVSYtVAqGA72zk25cPuoH1a9GmtrhJ2syeXCh/tdUCsZ\nmksLU77GKve4jr8upOzryiozAKA/w9fYRBS4EkIIIYRMo88llLYNnUHgOuwJod8VxAVNxQCAnrHJ\ng07I2W1Xux1f/9ex+T6MnCRflBnMsFz4jY4xvHJyBO/79e6cAxGSOXcwinKzFssqjHOYcfWhodiA\nhmIDgNSVOPu7nFhZZYZWrUz5GrVSAaNWlVIqLJU5r6oSsrO9YxS4EkIIIYTkXb84TGTEG07p8cpG\nS49wonnD2koA1Of6VrS1ZQC/29mFQGRhrzva1W6f1K+dfFEmkyA0HIvD7gvj0sUlGHAFcdMvd+LE\noCfvx0rGuQJRWHRC9vNQrxvxxOy3G3Ta/WgoLkSJsQAGjVIuHQ7H4jjc78aGWmvar7MZNClThaXB\nUisrhYxrX459rhS4EkIIIYRMQyqdjCd4ziW+Lb1OqJUM16wsB2MUuL4VSZn5hT7g6O6njuLb/05d\neyMFrkoFy6hUeNgtDAe6blUFnvjkBYglhD5wMnvcwSjMOjXW1ljhC8fQPurL6+P3OQO4+6kjCEXj\nAAB/OIZhTxiNJQYwxlBXZECXWCp8bMCDSCyBjfXpA1erXpM249pQYoBOrcx5sjAFroQQQggh00jO\nQA26czvhaulxYUWlGSatGhUmLXrHKHB9q5HKHzPtEZ0P3Q4/Ou1+dI/5UwaEDXlCsBk0KDdpM+rl\nHhB/DiosWiwpN2JtjQW9Z7DmhMzMFYjAotdgXa3Qb5rvtTgvHR/GY3t68PyxIQDjg5kaxTLhhmKD\nXCp8oFt47vV1mWVcpSDWqtegxqbL+f2PAldCCCGEkGkMuEJQKhiA3PpcY/EEDve55BPO2iI9uilw\nfUuJJ7gcsC7kfs/XTgklwqFoAiNJK1WG3CGUm7SosugyOn7pAk6FWQcAqLRoc76oQ2YWT3B4QjGY\ndWo0FBlg0qrkPte/7+/Dlu+8jBePD5/Rc0gXHrYeHAAAdIhBakOJELjWF+vR6wwiGk9gX5cTtTY9\nSo3atI9l1WtSpgpLpcJmnRrVVj1lXAkhhBBCZkOfK4hlFcKuwlwmC58c8iIUTWCd2A9WZzNQqfBb\nzKA7iJjYc7iQM67bWkfBhGswKYN2Bt0hlJu1qMgwAJXKoSstWvG/OrgCUfjDC7u/92zlEQM/i14N\nhYJhTY0FLT0uPLi9A5//2yG4g1F88o/78dzRwZyfQ+o7fb11FGP+CDpHhddHfZFB/m88wdHnDGJ/\njxMbpsi2AoDNoIYzMD5V2BWIQKdWQqtWotqqox5XQgghhJzdfvVaG7797+PzfRiTDLiCWFFhRoFK\ngSFP9oGrtL91Xc14xtXuC+d8kh+IxHDdfdtx4fdewdt/+jpuvn83jva7c3oskh/JU1IXasY1FI1j\nV7sdly0uAZDaZz3sEQLXSosOQ+7QjIN/htwhmHVq6DUqAECVRci8UtZ1driSAlcAWFdrxckhL771\n7xO4dmU5dnz5cqyuNuPOP7Xg6cMDk76ecz5jeW6fM4gqiw6xBMczRwbRafehyqKTpwZLk4W3nx7F\nqDc8ZZmwcJwaBKNxBCNCv6wrEJWPvcaqhycUk7Ow2aDAlRBCCCELwisnRvDs0aH5PowUoWgco94w\nqqw6VJgz6/+bqKXHieLCAlRbhZP7uiI9AKAnx3Lhp1r6cWzAgzU1ZtTa9GjpdeGJ/X05PRbJj14x\ng1RiLJCnUC80ezvHEIomcMvmWqgUTB60E47F4fBHUG7SotKsRTTOYfeFp32sQXcQFebxMlGpZLh/\ngQ+mOlu5xB5Ri07Ykbql0QYAuGVzDX5x63oUFRbg0Y+eh/W1Fnz28RYc7ktdl/O3fX24+Aevom3E\nO+Vz9DmDuHxpCRaVFmLrwX502v1oFMuEAaBeDFz/Lr7XbJw24yocp9Tb6gwIg6UAyO+DuWRdKXAl\nhBBCyILg8Ecw7AkhMQdrHjIlBaqVFh3KzVoM5ZBRaukR+luZWKNZZxNOAKcqF/aFY1NmvDjneHRX\nN1ZUmvDLW9fjgds3YlO9FXs6x7I+LpI/fc4gGAM21VvlwUULzbbWUWhUCly8qAQ1tvE+6xGPEKRK\nGVdg5nLnAVdIvi8wXjI8uECzzWc7KeNqFrOWFzQV47UvXIbv3LRK7r8vLFDhoQ9vglmnxr1JE56j\n8QTue+U0AOBwX/rKDE8oCncwihqrHjesrcSbXU6cGPLKWVYAKDJoUFigwqE+NwoLVFhcZpzyeK16\nIXCVBjS5gxH5tmqrcOEulz5XClwJIYScE4Y9IVz8g1emveJM5pfdF0Y0zjEWyG3lzGyQTuCrLDpU\nmHVZZ1wP97nQaffj4kXF8m21csbVP+n+oWgcF3//FTy2pzvt4+3pHMOpYS/uOL9eDoQ31xfh5JAn\np9I7kh99YwFUmLSoKzJkVGo7F144NoQ/7O6Spwe/dmoE5zXYoNMoUWvTo1vMuEqv6XKTVs6czrTS\nZ2LGtcykhYIt7P7es5k7MD7cSFJfbJDfAyQmrRqfuKQJr50axX5x8u+TB/rkIPHUcPrff1KVQLVV\njxvWVgEAIrFESuDKGEN9sfDeta7WIgfM6UzMuKaUCtuE11guk4UpcCWEEHJOOD7oQe9YEPu68rtC\ngORHOBaHNyT0fOYyuXe2jJ/QCRnXbDPCv9/VDYNGiZvWVcm3mXVqmHXqtBnX1mEvnIEojg940j7e\no7u7YNGr8a61lfJtmxts4BzY301Z1/nS6wyg2qZHlUWHaJxj1Dt9qe1s63b48dk/t+CrW4/h8387\nhI5RH9pH/bhsSSkAoL5Ij257AJxzuW+7wqzNqFc1GInDGYimZFzVSgXKTFoqFZ4l0kUpS1LgOpXb\nz69DkUGDn7zYimg8gV+82obV1WYsLTeidSh94NqX9D5XY9NjvTgBPTlwBcYHNU03mAkQhjMB4xlX\nV3A8cDXr1CgsUFHGlRBCCJmKdCLZm+M0QzK7knf+LajA1SWUgJaZtKiQ+v/8mQUlDl8Y/zo8gHev\nr4ZRm3rCWVekT9vjerTfIz/vRIPuIJ4/NoybN9bIA1MAIfuhVjLs7aSLMvl0YtCDv+3rzei+vWNB\n1Fj1cuA3nwOaOOf436eOQKVQ4OMXN+DJA/14//27AQCXioOZ6ooM8IZjcAaicvl7mVkLk04FvUY5\n7fGPr8JJXYVSYdZSxnWWuNJkXKdiKFDhk5c1YUebHf/31FH0jgXx2SsWYWm5EaemDFyF9yKp//S9\nG2qgVDAsKU8tB5YC2ZkCV6ks2OmPgHMu76AFhMytMFmYAldCCCEkLWnYSPL0T7JwOHxJgWsOk3vP\nRNuId8pgud8VRJlRC41KgXKTcKKeaWD9l329iMQSuP38ukmfq7VNEbgOuOXnneixN3qQ4By3bUl9\nPK1aidXVFuztdGR0XGRmL58Yxnt+vQtffOLwpOzjS8eH8dFH3pQz7+FYHMPeEGpsuox7RGfTE/v7\nsLPNga9cuxR3X7ccP7l5jdC/aNOhSRy2Iw0I63L4MeQOw6BRwligAmMMlRYdBpMypzvb7HLZKZBU\nWjwhcK206BZsf+/ZzhWMwFiggkqZWej2wfPqUGIswF/29WJllQlXLivF4nIjBtwheEKTWwr6nEHo\n1Eq5xPeWzTV47QuXyaXjkksWl2BtjQXra6cPXM06NRgDxgJRBCJxROM8JVss7HKlUmFCCCEkLcq4\nLmzJU0znMuPKOccdD7+JL//9cNrP9zuD8uAZ6SQukz7XWDyBx97owYXNRViUZohJXZEe/c4gYvFE\nyu3HxBLhAVdQ7k0EgHiC489v9uDKpWWoseknPd7mBhuO9Lvl9RMkc4kER48jgBFvCKFoHH/Y3YWP\nP7pPzhod7Emd0PpkSx9ePjmCE0NidtwZBOfCmg/ptTJfGddRbxjf+vcJbKq34tbNtQCAm9ZVY+ud\nF+H+2zaODwgrkgaE+THkCaLMrJU/V2HWygFoNJ7AZx5vwT3/PCo/hxSUV04IaqosQg/4QhquNtHJ\nIc9Z+TPiDkTlwUyZ0GmUuPOyJgDAZ69YBMYYlojvQ6fT9Ln2jgVQbdXJrwHGWNr3mU31Nvzjzgth\nKFBN+/wqpQJmnRpOf2TSKh9AyOz2jgVS3uMyQYErIYSQc4IUuOZSnjTgCuLDv9uLnimmwJIzJ2Vc\nFWxuM64D7hD6XUHsbnfAl2av6oA7iCpxCqaUYcoksH755Aj6XUHcfn592s/X2QyIJXjKEJxoPIET\ngx4YNEqEogk4ksqn+5wB2H0RXL28LO3jba63IRrnaOmlcuFsPbijA5f88FVs/vbLWPrV5/DVrcdw\n+ZJS/PuzF0GjVOBg73jgyjmXs4+72oQMt/SeUmPTw6hVw6RVzVvG9UfPn0IwEsd3370aiqThOcsr\nTVheaZL/XmPTgTFhsvWgO5RS9ltl0cnHv6PNjjF/BCcGvfLe4ekyrpFY6ut2IfGHY3jXz3fi4Z2d\n830oWUvuEc3U7efXY+udF+LqFeUAIJf9nkxTLtznDMplwvli1WvgDETkVT5mcZUPABQXauCPxBGZ\ncOFuJhS4EkIIOSdIgeuoN4xQNLsr7m90OPDaqVF89s8tiGb5i5ZkxiH2jTaWFGJ4DgPXfV3CQKNI\nPIEdp0dTPpdIcAy6QnIWrciggUapyCjj+ujuLlRZdLhyaWnaz0uThbuTJgu3j/oQiSXkATrJ+0A7\n7cL9GkpSh6VINtRbwRjwJvW5ZiUWT+CRnV1YU2PBN29YgS9eswTfunElHrh9Iyx6DZZVmlIC1wF3\nCMPi+pgdbXYA41Uc0ol/lVU/L7tcw7E4njkyiBvXVaK5tHDa+xaolKg069DtCGDYHUKZaTwIrbTo\nYPdFEIrGsbWlH4CQ8Zf+Pwy6gygyaFL6rIHxnteF2ufaafcjEk9M2ee5UPjDMfz0pdaUC2muQETe\n4ZophYJhTY1F/nuVRQeDRpl2QFOfMyCvqckXq14NZyAiT0S2JgXearHkORanjCshhBAyyagvLI/v\nz7a3RuqLPdjrwk9fap3h3iQXDl8EGpUCzSWFWa+cORMHup3Qa5QwaVV4+cRIyufsvjAi8QSqxb5F\nhYKhzFww4y5XfziG3e0O3LSuasqeNKnHMHmysDSY6eoVQlY1OQCQAldpqudEJq0ay8pN2NtFfa7Z\neOnECAbcIXzqsiZ86Px63Hl5M27bUie/V6yrseBIv1teb3NAzLauq7Vgb+cYIrEEeseCUCuZHPxV\nWbSzUiociMTgnCabubPNDm84hmtXVWT0eHVFenSM+jDsDadkXKWPO+1+vHB8GNevrgBjkCeyD7hC\nqLBoJz3eQujvnU6XuP5H+llaqB7e0YmfvnQar5wcfz9yBaMZDWaaDmMMi8uNk1biuINReEIxeU1N\nvtgMGoz5o3AGpFLh8cBbClyzvRBMgSshhJBzgt0bxrIKoVQq2wFNPWMBlJu0uHljDX71Wjt2t1Nw\nkG92XwTFBo2wciaPgasvHJu2p21/jxNrayy4dEkpXj01ktKf1yf18iWt/agwzbzL9figBwkuBDdT\nKTNqYdSq5EAIAI72u6HXKHHxImHya3Lw02X3o7BAheLCqbMumxtsONDtQigax1/39eKmX+1ES8/c\nZ2AdvvldBZMNKTN+1bL0JdhraywIROJoFU/293c7oVUr8LGLGhGMxnGw14VeZwBVFp0c7FYmldrm\n0z1bj+F94nTgdJ45MgSjVoULm4qnvE+yuiIDjg96EE9wefAYAHky8qO7uxGIxHHbljosKTNin7hu\nSdjhOjnIkb5uYAFNBU/WJQasHaO+rHsr54o3FMWDO4RS5q6kADvbHtepLCkTJgsnf//JO1zzyarX\niD2uwsUWS0rGVfhZieY748oYe5gxNsIYO5p021rG2BuMsYOMsX2Msc3i7Ywxdh9jrI0xdpgxtj7p\na+5gjJ0W/9yR1VESQgghZyAUjcMTismTELMd0NQ7FkCtTY973rUcDUUG3PWXg2knM5LcOfxhFBsL\nUG7WwhuOpe03zcV//G7vlIOX/OEYTgx6sbHOiquWlcLui+BQ33hZqHRCV5XU+1Vu1s7Yg3u4T5gM\nvKraPOV9FAqGd62pxDNHB+UdjccG3FheYYJVr4ZBo0zpx+50BNBQbJCHp6RzXoMNwWgcl/7wVXzp\nicNo6XHh6cOD0x5rvp0a8mLjt1+al4A5W63DXuxqd6RkWCeSSi2lMtmWHifWVFtwUXMxFEzIcvaN\nBVIG2VRZdPCEYvCK7xH3b2vHjb/cecbHu6/bibYRX9pS+mg8gRePD+Nty8qgUWWWl6ov0suBQ3lS\nIFohBqB/39+HCrMWm+tt2FhvRUuPC3GpfN48OeNq0auhUysXcMZVeN/3R+Lzvmd3Ko/u7oY7GIVW\nrZADV8453MFoRjtcZ7Kk3AhnIIrRpItLE1fh5IvNoMFYIJJ2lc9sZlwfAfD2Cbf9AMDXOedrAXxN\n/DsAXAtgkfjnEwB+DQCMMRuAewCcB2AzgHsYY9PPUSaEEEKmEYsn8OMXTqVMo52KdJ/lFSZoVIpJ\nA5qOD3gmTXdN1usMoNqmg16jwnfevQpDnhBemVBWSs6MwxdBkUGT9cqZ6fjDMezvduJwnyvt5w/1\nCifi6+usuHRxCZQKllIuPJAu42rWYtAdmjZjc6TPhQqzFqXGySf3yW7ZXItQNIGtB/uRSHAcH/Bg\nRaUJjDFUWXWTMq71xenLhCWbG2zQqZUw69T4zW0bsKHOmtKfORe6HX5wjpT1KQvVo7u7oFEpcPOm\nminvU1+kh0WvxqFeIZN9bMCDDXVWmPVqrKwyY1e7Hb3OYEq2arxkNoRILIHfbu/AwV6XPNwoF55Q\nVC5xPZDm/+3udgfcwWjGZcLAeLk6gJSMq1QqHIkn8K41lVAoGDbW2eALx7CvawzecEwObpMxxlBh\nWRi7XDvt/kmzDLrsfmjEgKns2kIeAAAgAElEQVR9dOGVC/vDMTy4vQOXLynB+lorOsR/b38kjliC\nZz2cKR1psnDrkE++rW+2Mq4GDSKxBAZcwqqd5J7oWQtcOeevAxibeDMAaTSZGcCA+PENAB7lgjcA\nWBhjFQCuAfAi53yMc+4E8CImB8OEEEJIxo4PevDzV9rw9/19M95XurpeZtLKY/glu9sdeMd923Hd\nfTuwUxy2kiwci2PIE0KtmFHZXG+DzaDBttbRSfcluXP4wigqLJD7BPMxoOlQrwsJLpR6h2OTy4X3\ny/2KVlj0Gmyos+LlpL6yflcQRq0KJu34CWO5WYtILCH3baVzuN+NVVVTZ1slK6vMWFFpwuN7e9Hp\n8MMfiWOF+HXJ5aaRWAJ9zgAaiqY/sSwqLMDu/7kCz/7XJXj7ynKsq7HgaL97TgeKSdmV1jQrN+Zb\nNJ7A/m4njva7cWrIiycP9ONdayrl3ZXpMMawptqCg70uHO5zI5bgcuXGBU3FaOlxYcwfSekPTO71\nfPH4MOzixOxcJppLjotrkgAh8zrRs0cHYdAocfGizMqEgfGVOEDqhGCtWoki8f/Ju9ZWAgA21Anf\ns5TBr0iTcQVSJxLPl2g8gevu245fvdaecnuXw4/zGm0AgA67L92XzqtHd3fDGYjis1cuQn2xQe7J\nlabyZjucKZ3F8mTh8ddTnzMIvUaZMjwpH2xiT2vHqH9S0K2arVLhKXwOwA8ZY70AfgTgf8TbqwD0\nJt2vT7xtqtsnYYx9Qiw/3jc6SicFhBBC0pP6DNOdxE0kBa7FhQWosepTSoV3tduhYEAgGsMHH9yD\n//zDvpQr9dKORilwVSgYLllUjNdbRxf0vsKzCeccdn8ERYUa+YQ4uY+0y+5H+2j2J5pSYJrgQJd9\ncnn4/h4nFpcVyiVsVy4txYlBj5zpHHAF5b49yfjxpT8594ai6Bj1Y/U0ZcLJPrC5FicGPfjz3h4A\nwMpK4euqLOMZ156xABIcM2ZcAWEAilT2uqbGgnBsbqeoOsWT7Nl6zkgsgVdPjkxbITGVJw/04T2/\n3oXrf74D1/z0dQQicdx+ft2MX7emxoLWYS+2i1On14tB3EXNxYiJ7wE1SdkqqeSyzxXEn/Z2y/18\nyRfMsnW0Xyg/bywxTMpmx+IJvHBsGFcsK5s06Xc6UsZVrWRyoCqpsemxqLQQyyuEPFW1VYcyUwGe\nOSIErpVpMq6AsNt1vntch9whBCJx7O8ez7t5Q1HYfRGc31QErVqBzgWQcU0kOJ45Moj7t7XjR8+f\nwgOvt+OSxSVYV2tFY7EBrkBU6BGVSm3zEFgWFxaguFCTcmFJmCism7YNIRdSsNpp908aLKWZ4+FM\nnwRwF+e8BsBdAB4Sb0/3HfNpbp98I+cPcM43cs43lpSU5Hh4hBBC3uqkUtID3c4ZB21IGY8SY4GY\ncR0POt7sGsOKSjNevOtSfPryZjx/bBivJmXdesSTzeQetsuWlMLhj+CIeDJJzow3HEMklkCxoUDO\n/CRnXD/3l4P49J9asn7cAz1OFKik0sDUwDeR4DjQ7cSGOpt825XigJ4fPHcS33r6OA70uCYFrlIv\n4FSlzNJk4FXVUw9mSnbD2kpo1Qr8bmcXNEoFFpUJa0yqrDq4AlH4wzG51y2TwDXZWrE/s2WacmGH\nL5zXQTWuoJRx9c3KhZ2HdnTiPx55E+/9zW50ZHkxo3csCKWC4f4PbcCP37cGD3xoA1Zn8O+0rsaC\nBAce39uDxmKDnKHdWG+V+0mT+wNLCgugVjLsbrdjZ5sDHzxPCI6z7a1PdrTfjXKTFlcvL8exAXfK\nxbW9XWNw+CO4dmV5Vo+p16hQaixAqVGbsvMVAH7w3tX4zYc2yMEMYwwb623yjtapMq6VFh1GveG0\nFQ5zRcr4Hu5zy69t6cJVY7EB9UUGuQx3Pv12ewc+9dgBfPfZk/jVa23QqpX40jVLAIxPD+90+OUe\n+Hz0uALA4jIjTg2P/+xMLHXPF+nnZMgTmpRxneupwncAeFL8+G8Q+lYBIZOa3ChQDaGMeKrbCSGE\nkJxIGTmHPzLjegMp41pUqEGNTS+O/48iEkugpceFTfU2aNVKfPqKZigVDMeSyvJ6xfK+2qTA9eJF\nxWAMVC6cJw7xwkJRobAb0qJXy4GhPxzDkX43Tg555GE3mUgkOA70uHDNCuFkvn0kNchpG/XBE4rJ\nJZAA0FRiwJIyI7YeHMBje3pg0avxzjWVKV+XLiOcTOqnzaRUGBDW2Fy3qhKxBMeScqN8QicFzP2u\noFwy2Jhl4Fpt1aG4UIODPekD1ze7xrD5Oy+nrN04U1JZYzAaly/65EsiwfH43h40FBvQaffjHfdt\nx2N7ujP+ersvDJtBg2tWlOM9G6px9YrMAj1pQJPdF8G62vHXi1atxAbx78kXthQKhnKzFs8cGYJS\nwfDJy5qgUyuznmae7OiAByurTNhQZ0U0zuUBYADwzJFBaNUKXLYk+4TPknIj6osnBy2Ly4xoKknd\nBbtR/FlhDCl7X5NJa3Ly0aOeqwGxGsIbisnrpjod4xd/GksM874S58SgBz9+oRXXrCjD0a9fg/bv\nvAO7/+dKrBTfN6R9zZ2j/rxmXAHh3/b0sFe+sCRlXPPNmpTFt+pTM/pqlRS4zk2p8ACAS8WPrwBw\nWvz4nwBuF6cLbwHg5pwPAngewNWMMas4lOlq8TZCCCEkJ0PuoFxuNFO58KgvBJtBA7VSIZf09Y4F\ncKTfjXAsgc0NwgmZVq1Ec0khjg2MnxT2jgWgUSlQUlgg31ZUWIDVVWa8dooGNOWDtD6lSPx/XG7S\nyoHhgR4n4gkOzoFDvZlnuDvsQqbiouZiVFl0kzKuUrllcuDKGMNTd16Alq++Dce/cQ1e+fxluHFd\namdTcWEBlAo2ZR/f4X43qq26afsmJ7pls3Btf2WVSb5NOpHsdwbRaRd6xCz67HrcpP7MQ2mGU0Vi\nCfzvk0cQT/AZpyRnwxWIQkreTdwXeaZ2tNnRMxbA565ahOc/dwk21tlw91NH0TaSWebV7gujOOnn\nOFM2g0a+cJX8egGAm9ZVYWWVaVKprXTh4aplpSgzaVFj02W9P1oSiMTQPurDyiqz/PzS69cTiuKp\nA/24dmUF9BpV1o/94/etwb3vX5vRfTeK1QmlxgL5AstEyRdc5suAa/z1fFisipGqFupsBjQWF6Jn\nLIBIbO56v5OFY3Hc9ZeDMOnU+M5Nq1BYoJpUpltj1UOpYOhy+MfXyeShxxUAlpYbEYjE8cc93XAH\novCGYrMSuNqS3q8mZVwVUo9rnjOujLHHAewGsIQx1scY+yiAjwP4MWPsEIDvQJggDADPAOgA0Abg\ntwA+BQCc8zEA3wTwpvjnG+JthBBCSE4G3SGsrjbDrFNjf9d44JpIcDx3dCjlpGTUG5YDT2mISp8z\niH1dwq+i5HLRFZWmlIxrjyOAGqtuUindpUtKcbDXJWeYkrkCEfzo+VPYfno0p168c41Uyi2d/JeZ\ntHKp8N7OMSiYkOU5kMWKFWny6vo6K5pKC9GWJnAtMmhQP2HgkV6jgtWgmbLfS6lgWFlpwsM7O7H1\nYP+kzx/pc2fc3yrZUGfFpy9vxq2bx/stKydkXOuLssu2StbWWNA+6pu0vunBHR04LQZ80+25zZYz\nEMEysS8y332uf9rTA5tBg7evLEe5WYuvvXM5AGEIVyZGfZFp9+BORyq7Xl+XWlr8/k01ePozF096\nvUj/freKZcJCb31uwdzxAQ84F/qfbQYNGovH+1z/srcX/kgcH72oIafHLjVpp8yeTrSswgi9Rpl2\nh6skeaLyfOl3BWHWqaFRKXBEvGjTZfejwqyFTqNEQ7EB8QQ/o9LtM3Hvi604OeTFD967Sr5YN5FG\npUC1VYcO+3jGNR9ThQHgutUVuLC5CF/begy3P7wHQP4nCgOASaeWL2KZdVNlXPM/VfgWznkF51zN\nOa/mnD/EOd/BOd/AOV/DOT+Pc75fvC/nnN/JOW/inK/inO9LepyHOefN4p/fZXWUhBBCyARDnhAq\nLTpsqLNiX9IQjmePDuH//XE//n1kvCNl1BtGsVH4xZmccX2zawyNxQaUGMdPHpZXmjDiDWPEK5x4\n9TpTdzRKLl1cggQHtp+ePIn4+WND+MWrbfjQQ3ux5bsv4+v/OpZVmeu5xuEfH54FjK+cAYTAdWWV\nGc0lhVntBj3Q44RZp0ZjsQFNJQa0j/hTei7f7BrD+jprTgNJHrxjE1ZVmfFffz6I7z5zAnHxcV2B\nCHrGAlhVlVl/q4Qxhi9csyRl72upUQuVgqHfFUTnqB8NWZYJS9bWWsA5cLg3tYrgvpdP46plpQDy\nG7i6AlFUWnSotemzDlzjCY7XW0fT9tyOeEJ48cQw3rehGgUqYQBRU0khdGplxr3m9qQLWNm6YW0l\nLllcgkWlxozuf8XSUly1rBQXNwtTfqutOvSNBXLqJ5YGM0mvj/V1VhzocSIaT+B3OzuxpdEml5jO\nJpVSgQ+eV4u3T9NLK5fSz2vGNYhamx7LK0xySXXyxZ9GsQy34wwGNG1rHc1pvVHvWAAPvN6BWzbX\n4IqlZdPet6HYgC6xcqRApchq8NZ0jFo1/vCR8/C165fjpPgzOhsZV6WCyVUiU/W4xuaoVJgQQgiZ\nN5xzDLpDqDBrsaHOivZRP5zi0JAHd3QAAI70jWdNR33jJ6wWvRqFBSoxcHViU70t5bFXiFNdpaxr\nz1ggpb9VsrbGAotejddOTe5z7XMKQ2B+9cH12Nxgw6O7u3HTr3ZlPUzmXCH1uNqSMq4Ofxj+cAwt\nvUIP8vpaK1p6XRmf+O/vdmJ9rQUKBUNTSSGC0bhcEts7FkC3I4ALm4pyOt4SYwEe+9gW3LalFve/\n3oHPPH4AsXhCDqCyzbimo1QIOzE7Rn0YcIdyzrhKw4ekcmHOOb629SiUjOGbN66EWskQjOY3cLXq\n1VhSbkxZuZGJV06O4PaH96b0b0r+uq8X8QTHLZtr5duUCobllSY5sJsO51woFTbmFrheuawMj35k\nszyxeSbXr67Eg3dskis1amx6eMMxedBONo4OeFBcWIBS8dg31lkx5o/g16+1Y8Adwkcvasz6MXN1\n93XL8f8ubZry89IqnfksFe53BlFp0WJ1tRlH+92IJzi6HAF5uFljsdC7m+v78elhL+54eC++/PfD\nU97HF47h7qeOTCoPFwZGQR7YNZ36IqEX1xWI5C3bKlEoGD5yUQOe/sxF+L/rlsnTzPNNWrEzcdWO\nSvy5iMzRcCZCCCFk3jgDwmClcrNWHhiyv9uJ/d1OtPS4wBjkPlXOOezeiJxVZYyh2qrDq6dG4Q5G\nsbE+tWdteaVQ5nh8wCP3/6QLXJUKhosXlWBbmrU4fc4gyk1avGNVBX71wQ34w0c3w+EL44Zf7sSr\n1Bc7icMXhkmrkie0lpu14Bx46cQwIrEENjfYsL7OAlcgmtE0UHcgitMjPnnfZnOpcKIq9blKWfKL\nFuW+vUCjUuBbN67C3e9YhmeODOELfzskD0HKV/aryqLDGx1CNUG6ATqZMOvUaCwxoEU8tt9s68Cr\np0Zx19sWo8Ksg1atRCDPpcIWvQZLy43ocgRSpt/ORFoXM3EHbDzB8fjeXlzYXDRpsvKqKjOODXjk\nrPdUfOEYwrFEzhnXM1UtV3pkH9Ad7XdjZZVJrg6Q+lx//spp1BfpceXS0vwdaB5UW3XzFrhyzjHg\nCqLSosOqKjP8kTgO9gq7dhvEnyGzXo0igybnAU272h0AhJ226doFAOBnL7XisT09eO7oUMrtrcNe\nMIZJg6/SaSwxIBCJ4/SIL2/9rRMtKjPiYxc3TmqFyRfpYuTEUmHNbJUKE0IIIQuNtEOzwqzFmhoL\n1EqGN7vH8PCOTpi0Kty0tgrHBzxIJDj8kTiC0XhKOXC1VS9PPN3ckJpxNevUqLXpcWzALd9nqv6f\nSxYVw+4Ly72CkolTGi9oKsY/P30Raqx6fPz3+1JWvRDA7o+kDM2RVuL865BQ7i1lXIHx3tWJHni9\nHfdsPQpXIIKW3tTBS9JJojTEZ/vpUVSatWgqyS2LmezjlzTii9cswT8ODuAXr7ahodgwaWdhrqos\nejlDJ2WJcrG2xoKDvS48fXgA33/uJK5fXYGPXCj0ROrUyqyCy+mEonGEYwlY9GosLjMinuBZ7d+V\nfi4mXpzY3e5AvyuY0gMsWVllRjAanzF7JvVRSy0Dc03qrc+2rzIUFQKX5CnVTSWFMGlViMY5PnpR\nw6wFHbmqtunzPlE6U55gDP5IHFUWnVxtIL2PJFctNBQbci4VfqPDgUqzFutrLfjqP45O2ul8etiL\n3+3sAgAcH0ytOjg94kWtTQ+dZuayX+l4j/V78jZReK5RqTAhhJBznrRqoVzMGK2oNOP5o0N49ugg\nbj2vDhvrbfCGY+h1BuRVOMmBq3QSWWosSJtNlQY0SSdf6e4DjGdnJ56c96XZi1dj0+PrN6xALMEn\nncyc6xy+MIqShuaUi8NitrWOYlFpIWwGDZpKCmHUqnAgzWqXRILjl6+24/e7u3HVvdvw4PZOKNj4\nGpPiQg1MWhXaR32IJzh2tTtw0aLinPpb07nz8mZ8+vJmhGOJvPYaVlnGh+bkmnEFhMDV7gvjrr8c\nxMY6K370vjVysKPX5C/j6hQHlVnFjCuQ3YAmKXDtnBBQSGXOlywunvQ1UkA3U5+r3ZfaRz3XpD75\n3iwDuhODQjZ5RVIpp0LBsKneBrNOjfdsqM7rceZDrU2Pfmdwxiz4bJAyvVUWHZpLhR7opw8PAkBK\nn3hjSW67XBMJjj2dY9jSVIR7378W0TjHl544LFfdcM5xzz+PQa9RYk21GScGU1//rcO+jPukpeON\nxBN5uxg212xTBK5UKkwIIWRO2X3hrMt88kUa3CMNAtlYZ0WXIwAFY7jjgjp5rcixAc944Fo4HgRI\nA5o2NdjSBi8rKk3odgRwfFA4GZYC3YnkJfFJJ0CRWAJDnlDaYRdS5m/iTtFzncMXQZEhKeMqBq7R\nOJcz4goFw9oaS9oBTSeHvHAHo/jPSxtRZdFhR5sdS8tNMBQI60EYY2guLUT7iB9H+t3CmpwzKBNO\n5/NXL8b33r0Kd14+df9ftqrE11BxoQZGbe4nrtJE3GqrHg/cvjFlyItWrcxbj6vTL04/1alRX2yA\nRqnIaiXOkJxxTf35ODXkRZVFl/b/QVOJAVq1YsbAVXofmK/A1aRVw6xToy/LycJHxV775FVJAPCN\nG1fiL/+5JacVOLOt1qZHLMEnZSLngrSmqtKiEyaAV5lg94XBWOqu3caSQth9YXhCUSQSHDtO2xGI\nzDxs6fSID2P+CM5vFMrW775uGbaftuPmB3bjlZPDePrwIHa1O/DFa5ZgS1MR2ka88u/JSCyBLrsf\ni8syq56otOjklW+WszRwlXa5TtzjSqXChBBC5kwsnsCVP96G3+/qmpfnH3KHoFQw+SR0ozhg6frV\nFagw67C4zAilguHYgHv8hDWpRFA6gdk0YSejZIWYxXn+2DCsevWUQYOhQIVSY0FK4DroDoLz9FMa\nbQYNrHo12s9gmuVbkcMfScm4WvRqFIgnNsml3OtrrWgd9sI3YZrnnk6h5+xDW+rw5KcuxPffswr/\nd/2ylPs0lRSifdSH7a3CMK1cBzNNhTGGD2yuxdJy08x3zlCVRXid5jqYSbKy0owvXrMEj35k86T9\nsnpN/kqF5X2TemFnclNpYZYZV+FntcsRSMnWtQ57saQ8fZZKpVRgecXMA5rmO+MKCO8J2ZYKv9Hh\ngFWvlvejSqosury+1vJJqlCZj3LhAfd44ApAnvBdKVbnSKRs5gvHhvH++3fjtof24JEMfp+90SG8\n12xpFN4/PnheLb5xwwr0O4P4yCP78Nk/t2BFpQm3nleH5RUmROPj5fKddj9iCY7FZZllXJUKhjpx\nXVe+hzPNlaXlRhQZNJMCVyoVJoQQMmfG/BG4g1G5Z3CuDbpDKDMWyBM+L2wuwtuWl+EzVy4CIGSR\nFpUW4mi/Rz5hTR7KsqneirctL8O1qyrSPv4KsQS4bcQ3ZZmwpF5cWSCRMipT9cU2lRRSxjVJLJ6A\nMxBJ2WfIGJP7XJOnPq+vsyLBJ+/t3NMxhmqrDtVWPZQKhps31eKCptSy0qbSQox4w3jm6BBWVJqm\n3J+4kEgZ14kDibKlUDDceXlz2rVOujyWCk/cN7m03Jhx4Mo5x5A7BLNOjUgsgX7x5ygaT6B91Dft\nyb40oGnikLRkdm8YCoZJgftcqrHqsyoVPjnkwTNHBvHeDdV5K2ufC7U5lkXnQ78zCI1KIe+EliZ8\nTyy1l/rbv/C3Q2gb9cGkVaXs757K7nYHqiw6+WeJMYbbz6/Hti9djp/cvAaXLCrB99+zGkoFky8s\nnBBbQ6ShY4syzLgC4wG2RT9/r9szccPaSuy9+yo5wypRKYXXM2VcCSGEzLoRMYs5NE9DhoY8QTmw\nAYS9dL+9fWPKpMblYp/qqDcMpYKlXPG16DX47e0bUWbSIp1So1buia2eIXBtLDagyzEeuPbLgWv6\n8uLm0sKsBta81TkDUXAulMMmqzBrUW3VyZkTYLzkNXlAUyLBsbdrDOc1TJ9BlV4bJwY9uDjPZcKz\npdKihUmrwpo8rNeZik6tytse1+QeVwBYXGbEoDsEd2DmFTCeUAzBaBxbGoULFe328SxVNM7lntl0\nVlaZEYjEp+1ZHPVFYDNoMl5nMxtqbDr0OYMZr3T6/rMnYSxQ4c7Lm2f5yPKrwqyFUsHmJePa7wqi\n0qyVe7il3bcTqxZqbQYsLTfihrWVeOm/L8V5jUU4OcPsAaG/1SFnW5OplQrctK4av//IZrnPvbFE\nKJc/Kfa5nh72QpHhRGGJFLierT2ujLG0P3NSCTT1uBJCCJl1UvmtNCRpNnTZ/VNmUAZdIVSYp1+Y\nvrLSDLsvjGMDbhQXarKevLlSzLpmknG1+yLwhIST8z5nAAqGlMA6WVNJIRz+iLx39lzn8AuvpeQe\nVwD4yrXL8OP3rUm5zaxTo7m0EHs6x+TbpJ4zKeCZirQSBwAuXjR5yM9CVKBSYvuXr8CtGex8zJVO\nk78e14kZV2l42VU/2YZP/nE/HtrROWUWThrMdL4YFEgTX6WM7bQZVzE4ma5c2O4Lz2uZMCC0KIRj\nCfn9czq72x149dQoPnV581mXbVMpFaiy6NCTw+qfMyWtwpE0FBlwzYoyXL2iPOV+GpUCz33uEvzs\nA+tQXFiQ0fqm1hEvnIHojO81ErVSgUVlhfIwvtZhH+qKDCklyzMZz7ienYHrVKhUmBBCyJwZ8Qon\nmbO11qXPGcCV925L23PEOcegOzRlYCiRyn13dzhSJgpnSpriWTNFya9EupIvlQv3OYOoMOvkX8wT\nNZUK96esq8AhrikpmpBxXVtjwXlpMhvXr67AjjY7Tg4JJ4NSf2u6LEiyGqsOaiVDgUohr8k5G5h1\n6lnNEurUirxlXF2BCLRqhXxifmFTEb7/nlW4qLkYRwfc+ObTx3HxD17Fu3+1E3/e25OSeZQugi2v\nNMOkVcnrbU4NeaFUMPnnJp3mkkIUqKYf0LQgAldpl+sMfa6cc3zvuZOoMGvx4Qvq5+DI8q/Gppuf\nHldXKCVwVSgY7v/QRly6ePoqiyXlwvqm6dpf3mjP7L0m2dJyE06KF19aR7xYVJrdWivp4s/EHuez\nnVLBwBiVChNCCJkDUsbAGYie8WCX/d3OSY/xZtcY4gmOR3d3Tcq6eoJCSWHFDIGr9As/FE3kdMIq\nlXvVF00fuEpXxDuTAteqKcqEAaC5RMgcUeAqGB+ak1lW6cMX1MOgUeKXr7YDEPpbK8Wy4umolAos\nKTfiwubirDIeb3V6jSqjaaqZcAWiKSX5KqUCN2+qxU9uXovtX7oCr3/xcnzp7UvgD8fxlSePYF9S\nybd0EazcpEVjSeF4xnXYi4ZiAwpUU/+bqZQKLKswZRC4zm/mUppOPtNk4eeODuFQrwt3vW3xWfta\nrbXp0TfHgWs0nsCwN5RTkCf1o07Xk727w4Fqqy5tr/hUllUYMeoNY8AVRLcjkPFgJsnqagte/+Ll\nWFd79lxsy5RaqaBSYULIW4M/HMPpLNYokLk1klTqNuKZuextKq3DXrzn17smTSc+0C0M3+lyBLCj\nzZ7yuUGPcNI3U6mwUauWJzKW5BC4XrWsFD+/Zd2MV9el5xgPXAPTBlFVVh00KsWcThY+PuDBfS+f\nzri3bi7JGVdDZv9GFr0Gt51fh38fHkDHqE/uOctkeM1Dd2yaVH58rtOqlQhF87PWyhmITtuLV1uk\nx6cua8bvP7IZAFJ6CqXAtdRUgMYSg/zz1DrsxZIMTvZXVZlxfJoBTXZvZN4zrtKU6JmGFv1xTzfq\nivR4z/qFt6M1UzU2PRz+yKQJ4LNpyB0C57llJ+uL9NCopl7fJO9vzSLbCgDLKoSA+Jkjg4gneFaD\nmSS1M1w8PVtplAoqFSaEvDX8/JU2vPMXO/K2poHkV3KP1pkMaPpHSz8AYPvp1OB0f7cTm+ttKDJo\n8Mc3ulM+J+1wnalUGBD6XAHkVCqsUirwzjWVM/bGatVKVFl06LL7k3a4Tn2ioVQwNBYb5nQi89aD\n/bj3xVbsbHPM2XNmyuEXhmdlM3zkYxc1Qq1U4Ct/PwK7L4LzMuw5KzNp5b2CRKDXKBGJJxCbJvMR\niWUW2LoCkUlrL9IpMxXAWKBK+RkY8oRg1auhVSvRVFKIIU8Io94wesYyy1ItrzTBF46h3zU5m+kP\nC1UaxTm8D+STTqNEcWEBesXez2MDbuxuT/2Z9IVj2Ns5hmtWlM/rIKkzNR+ThZN3uGZLpVRgUWmh\nPAF4opZeJ1yBKC5qzq4/Xgpctx4cADB9r/a5RqVkVCpMCJl/050AZWp3ux2haEIeakAWlhHveL9Y\nroEr51z+Zf5m15h8kcIfjuHkkAdbmorw/k01eOnEsHxCAoz3ws1UKgyMlwvnErhmo75Yj05HAEPu\nEBJT7HBN1jTHk4XdQToiCvkAACAASURBVGFozq+3tc3Zc2bKIU57zWZ4VomxAB/YVIO9XcKQpmyz\nIGScTixFnWpAU58zgJX/3/PYmzQQayquYBRWw8wXIBhjaCotxOnkwNUdlqd8N0o7No8PgXNMucM1\nWZlJ+BmXSs+TLYQdrpIamw4nhjz40hOHcP3Pd+COh/emTF3ecXoU0TjH5UtK5/Eoz9x87HLtlwPX\nmX83pLNkmvVNWw8OoEClwFXLy7J6TJtBgzJTAY70u4WLliVnttrqrUStVFDgSgiZX88cGcT6b754\nRmW+/nAMR8V9akf6pl8qTzAv5Z+j3rC8H2/IndvkyP3dTvS7grhudQXCsQQO9Aj9bod6XUhwYH2t\nBbdurgUH8Oe9PfLXDbpDULDMgtEVcxW4FhnQOepDnzh0ZcbAtaQQvWPTT7DMJ2na6842Bw73je9A\njcUT8z7deNgTyimg+MSlTVApGMpN2hknP5Op6TTTB66H+9yIxBLY151B4BqIwKzLLKPdXFqYknEd\n9owPXGsU14U8d3QIQGaBq1RqLpWeJ8u2j3o21Vj1ONznxlMt/bhxbRUi8QT+dXhA/vwrJ0dg1Kqw\nsf7s7mlMl3H9/F8P4bE93VN9yRk7k4wrIOwdHvGGJ70nRuMJPH14EFctL0NhgSqHxxV+D9UV6aft\n1T7XaJQKRKlUmBAyn44PeOAJxfCZx1tyPik/0ONEXOxTmm7YBgE8oSiu/dl2/PD5k3P2nJxzjHhD\naCw2QKdWYsidW4/r1oMD0KoV+Nr1y6FUMOwUe1mlAHZdrRU1Nj0uX1KKx9/sla/MDrmDKDEWTDm1\nN9mFzcX44jVLZj170VBsgCcUk1+v1ZbpA6mmEgMSHOh2zE02wh2MYmm5EUatCr/ZJgw18oaiuPmB\nN3DlvdsQjs1fSX77qF/OsGWjyqLDV65dijuvaM6ov5WkJ2dcp5gs3C4Gl23D01cIcM7F4UyZlXwv\nKi3EiDcsVwMMeUIoMwqBa12RHowBu9od0KoVGV2YsIkl4GNpLsSMeoXbZvsCVibeu6Ea79tQjRfu\nuhT3vn8NFpcV4skDfQCEPspXT43iksUlGb2/LWRmnRrGApUcuHbZ/fj7gT5sb7VPuu+XnziM377e\nccbP2e8KocigyXmglRRgnpyQdd3RZseYP4Ib11bl9LhSufDiUioTTkalwoSQeTfsCQkLt4e8+N6z\nuQVTezvHoFQwbK63UcZ1GokEx+f/eggnh7wZlfHliy8cQyiaQKmpAOVmbU4rcaLxBP59ZBBXLStD\nmUmL1dVmuf9yf7cTi0oL5Z7H27bUYtQbxp/2CFlXYRVOZlfU1UoF7ry8GYYcrpJnQ1qJs6PNPu0O\nV4m0U3Su+lzdwSiqLDrcfn4dnhUnln7oob3Y3+3EmD+CfV3OlPvv6xrDL16Z/WFOoWgcvc4AmrJc\nESH52MWN+NCW2dtxei7Qz5BxlUra22YobfeFY4gleMb7JpN/BqLxBOy+MMrEnxutWolqq04YZlNq\nzKjXU1qnZPdPvpA2KmZccxnSlm+XLC7BD9+3Bg3FBjDG8O711TjQ40Kn3Y9jAx6MesO44iwvEwaE\ncvAam14uFf73kUEA420LyZ45MohvP3MCLx4fPqPnnLjDNVtLxcy+tGpLsrWlH2adesaVOlNZViE8\n7uIcBjO9lVGpMCFk3g17w1haYcR/XFiPR3Z14ZWT2f8i2ts5hhWVJmxptOH0iDdvqxrean69rR0v\nHh9GcWGBPIFzLkgThUuNWpSZCnLqcd1xWriCfYN4Bfui5mIc7nPBHYyipdeVsmfzssWluHRxCb75\n9HHs6XBgyB1ChSm3HqbZ0iD2Le3tHEO5SQuNavpfr43FwgnMXPW5uoNRmPVqfPiCBqiVCrz3N7tw\nbMCNn31gLTRKBV5vHU25/70vtuJHL7Tir/t6s36ufx4ayLgCoGPUD87Hgxgy97Ri4BqYIuMqBaxt\nI74pJ/YC4+XolgyGMwHAIjH71Dbihd0XBufCKhyJ9DOS6TAbvUYFvUaZvlTYGwZj41nZheSmdVVQ\nMOCpA3145eQIGAMuW5JbgLTQ1CYFrk8fFgJXTyg1cI3FE/CKk4f/+y8Hz+h32YAreEb7TkuMBbDq\n1Sl9roFIDC8cH8Y7VlXM+L4+lXU1VqgUDOvOov3Rc0FNpcKEkPk24gmh1KjFV65dimUVJnzxb4ez\nWm4fjsXR0uvC5nobVlVbkOCYcsrfuez11lH86IVTeNeaSnzs4gbYfZFJJwSzRZooXGIsQLlJKw9L\nysbWg6lXsC9oKkaCA4/v7YErEMX6pJ11CgXDfbesQ22RHp987AB6nYGMJgrPpRqrHgoGhGOJaScK\nS3QaYRLxnAauOjVKjAW4dXMtGBh+c9sG3LC2ChvrrdiWFLg6fGHs6RyDRqnAN/51HD1ZljP/bV8v\n7t/WkdEFJykoai6hwHW+SKXCoTTv04kER/uIH4UFKgQicQxOc5FKClwzmSoMCGuhClQKtI345PeQ\ncvN4RlQaYrOkPPPXhs2gSVsqbPeFYdVroFqA5bdlJi0ubC7Gky39ePnkMNZUW1C0ADLD+VBbpEev\nM4i2ES9ODHqgVrJJGVdPSHif+NhFDVApGf7zD/vgz2GFDucc/a4gKnIczAQIWeIl5caUUuGXTowg\nEInjhrWVOT9ubZEee+++CpflmLF9q1JTqTAhZL6NeMMoMxWgQKXE3e9Yhv+fvfcOj+wsz//vd3of\nlVEvK62272p7cbexjW1cwVTTTAIhgBNiEggk+QYSCO2bL8mP0ALGDiUJxASDjXHBYIzX612vt/dd\nadX79N7n/f1ximY0XTtajbTP57p8WTpzNPNKmj06z3vfz/04gzG83Gcv/oUiJ8UgkF3ddehtE8J/\nTpBdOIsvPXMWK21GfOWtvegW+wOHLpPqapcVVy2arDrM+CMFlZi5jHvCWTvY21fUQKdW4Pt7B8TP\nM3emrXo1Hn1wFxLJFCLxVEmJwpcTjUohF6zFgpkkeuaE0ywUiWQKgWhCtl7//d0bsO8zN+OW9UI6\n5o1rGnBuyi9bvl84M41kiuOb794GBWP4y8ePyT3npTBgDyKR4jg64il6bv9MAIyBkjYXEUMBxXXK\nF0E4nsTN6wTraqH3qzskFIylWoWFhFUhWVh67zVlKK5S4Wop6fkAoN6kzZsqXA3BTPl46/Z2jLnD\nODHmlX/Wy4GOOgNiiRQe2zcExoBb1zdlFa7S5xtaLfi3B7ahfyaAb/6+/PTzCW8EoVhSDvaaL+ua\nLbgw7Zf/pj15dBwtVh12d5U2cisfdUYN9eLPgazCBEEsKtFEEq5gTL752LOyDla9Gs+fnir5OV4T\nezV3ddWhyaJFg1lLAU05mPRGcO0qGwwalVy4VtIu/PBPj+K5U5M5H5uZo7jGkxyuUO5k2l8dn8hI\nmPZF4vjj/3gdSsbwoeu75eNalRK7uurgCMRQY1DnDOvpthnxrfdsh0apKCll9HLTJa651MJ1VYMJ\nA/ZgVtHvDcXxi6NjFVuXpGjUiIWrUsEyQmpuEFUASXV95tQUOusMeOOGJvzDvRtxaNiN75UYnBKJ\nJzEhpkyX0nd9cSaAzjrDvMNUiEun0DgcqVC9fWMzABRMi/eEJcW19Hm8q8XNG1lxTStcb1nfhHu3\ntGJnGfZKW17FNVYVo3DycfvGZhjFDYTlVLhKoVr/e2gMu7rqsKbJDH8kkbERJhWuVr0a169uwLbO\nWhwaKj+z4YKokq67xL8Na5vNCMWSODnuxVefO4eXLthLmudNlI+guJJVmCCIRUJS4qR5emqlAres\na8Tvzs6UPNv14KALqxtN8u7k5jYrBTTNIZFMwReJy71knXVCAmelCtdIPIlfHpvA44dyF092fxQa\npQJWvVq+0cxlF57xR/DnPzmKu77xCr6/dwDRRBIf+88juGgP4N/ftwM9c3bGr+kRBrtv66jJe5Nw\n/eoGnPiH23BTFYaXrJQL19JGs6xsMCIcT2Lan/mze/L4OD7xP8fnFXqVC4+4qWDNU1Csazaj0azF\nyxfs8IbieLXfgTf1NovBMW24aW2DrIQXY9gZgpTnVErh2j8TIJvwIiOPw8mhuEpW9l3dtagzagpa\n2+X3WYnjcACht3nMHcaQMwS1kmX0oLbW6PFvD2wrK1itzqjJOw6nmgtXvUaJ+7e3o6veII/wWg5I\nhWssmcI9m1tk14c/ra3FM0ep39BiwZkJX1kuHmA2CfhSk3ulwvf+77yKf//DRdy9uQUfu6nnkp6T\nyA0prgRBLCrTPtFCmrZrftvGZnjD8ZJuYpMpjsPDbuzunrXkbGqz4qI9MK+el+WKNxwH50Cd+Ide\np1ai1aqvWOE6I/4eDw+7c948zPgjaDBrwRiTe01zFVmDdmE9K+oM+Kdfn8V1X/09Xul34Ev39+La\nVbas869dVQ8AGf2tuahWda6rvjyrcL14ky71BkpIn/typG/Oh3RFIxeMMdywpgF7+xx4/vQUEimO\nOze1yI/1tlnhCsVKupEcEAub3V11ODLiRiyR/6YkkUxh0BGkYKZFppDietEegEWnQoNJi1UNha3t\n7qAUzlSe4goA+/odaDTrLtlKWW/SwhmMZqVhO/zVXbgCwGfv2YBn/uL6ZWUnba3RgTFAwYA7Ns0W\nrul24bnXp42tFgRjSTnUqVTOT/nQYtXl3aArlXXNFnTbjLh5XSOe+4sb8PV3bSs5cIwoDypcCYJY\nVGbE4qUxw4Zog1alwG9KiLk/O+lDIJrIKFw3t1uR4sAZCmiSkXrJatPUiZUNxoI9rv/8/Dl89slT\neH3IVbQAkVKCveF4zhEYdn8UNvF3LBWuuZKFh5zCeh59cBe++tZeRONJPHzrarxjZ0fO1+1ts+LL\n9/fivUt0vMkNaxqwu7sOG8Xe7GKYdcIN1twCVfrcX2CzJp5MYcxd2o3d7I1h/puvG9c0wBuO4+u/\n60NbjR6b22e/B6teDc6BQAlhSwPie/AduzoQTaQybP7+SFx2ZQDAqDuMWDI171E4RGUwaARFM2fh\nOhNET6MJjDGsahL6UfONSPKEYzBrVWXNH5U2LfpmAhUJXKs3ahBP8ox/O+FYEsFYEjZzdRcfaqVC\n/l0sF7QqYazRNT02NJi1OQtX6XpnkQtX4dpzeqK8v/nnpvwVaSHRa5T4/SdvwiPv31mVLSnLCbWS\nIZ4oT1lfXv9CCIKoOJxzTPuiJd1U5ArYMGhUuGFNA35zegqfu2dDwd3kV/qFweS70kIQpICmk2Pe\njONXMi5R2Ui31XXVG/HLY+PgnGf9jL2hOL790kVwDvxo/zBarTpsaLXCrFPBolPhgT2d8uB1ILMI\nPTTkzhpHYfdH0SFawBpMWigYMJ3DKjzgCEKtZGir1eOduzrx9h0dBfuEGGN4YHdnGT+J6mJlgwmP\n/+nVJZ9v0Qt/gv2RzIJQ+ryQy+DH+4fxpWfO4jefuKFoGEkxxRUQxhExJgRnffC67oz3kEUssL2h\nuPxxPgYdQTRZtPI4j4ODLuxYUQvOOT78o8MY94Tx0idvgkLBZPWOFNfFRSsGpOUKZ+q3B+Qk1FUN\nJnhCcTiDuftFPaF42WrXinojlAqGZIpn9LfOF2mWqzMQk9+rUlhTtSuuy5XvvW+nfO2R3h++8Oy1\nbe71aXWTCSoFw+kJL+7a3FLSa8STKQzYg7hxmYwRulJQKxWIpyqsuDLGHmOMzTDGTs05/ueMsfOM\nsdOMsf+bdvxvGGP94mO3px2/QzzWzxj7TFmrJAhi0fj1yUlc+9UXC4ZySEz7o1ApGOrm2Gpu29CE\nCW8Ep8bz76D6I3E88vIArlpZlzFAvNEizArNFdDkCcWuyFE5UvhI+tiJbpsR/kgiZzDJ60MucA48\n9oGd+Pq7tmJjmxXjnjBeH3LhxweG8dgrgxnnS0WoSavCoeFsi7fdH5XDfVRKBWym3LNchxxB+cYU\nAIVbzEG6sZ47xkj6PBDJX7geGXEjkeIlpW+WUrjWGjXY0l4DALiztzlznfrc68zFoCOIbpsRNpMW\nPQ1GvC6GrLx60Yn9A06MuEI4MuIGACpcqwSFgkGvViIyR3H1hgWFXFLEZXV0Ordd2B2KlTwKR0Kj\nUsgW+6aKFK7CdckVnFX27WLh2kCF66KwvsUi/02XN8HC6T2ucejVSmhVgmVdp1ZiVaOpLJfVkCOI\nWDKFtSXO/CWqg4WyCv8AwB3pBxhjbwBwH4DNnPONAP6feHwDgHcB2Ch+zbcZY0rGmBLAtwC8CcAG\nAA+I5xIEUeUcHHQhmeL42eHiKafTvggazdqsAuXW9U1QMBRMF/72SxfhDMbwd3dmXxp622pwYix7\ntMbXf9eHe7/5CkbL7IVZ6khW4XTFtVCy8GuDTmhUClzTY8N9W9vwyPt34tm/uB6vfPpmbOmowZg7\nnHH+lC8CvVqJa3rqcXjYnfFYPJmCMxjLsIM3W3WY8mWPoBh0BNFVT2NO8mHWCYrrXKuwpLgWsgqf\nmfCBMeDJYxNFxyB5Q8ULVwB42452bO+swbaOzB5jSRmeO8YiF0LhKhQ4u7vr8PqQcP34lxcuiGOy\nFPjV8QkAQuHaaNYWVXGJhUevUWbN3ZX6laUQtdVNwv9ztQ8AQgFSTn+rhFQQp89wnS9S37gjLaDJ\n4SfFtVrI1+M699q0odVSllVYCmYia+/SYj5W4aKFK+f8ZQBzt9w/CuArnPOoeM6MePw+AD/lnEc5\n54MA+gHsFv/r55wPcM5jAH4qnksQRJUjKZ1PHBkvujM244tmBDNJ1Bo12N1dl7dwHXOH8Ogrg3jL\ntjb0tmf3B25qs2DAEcy6sTo97kM8yfH13/WV+u0sC/IprkC+wtWFbR01OUON2msNOQvXZqsOO7tq\nMewMZfQlSomd6eNUmiy6LKtwKsUx5AzRfM4CSD2uc63CxRTXYDSBQWcQ797dCZWC4VtFVFdPOA6D\nRinPzM3He69agSc+dm3WxpN0U5lu78v5OqEYXMGYnK68u7sO/kgCj+wdwOFhN/785tW4eV0jfn1y\nEolkCv32AKmtVYJerUQ4lnl9vyiGq8mFpUUHk1aFi3kCmjyh2LxCbFaLKbCVUVxnrcIS6eO7iMWl\n1MJ1Y6sVdn8UM/7SktXPT/mhVDC6niwx1EoFEpW2CudhDYDrGWOvMcb+wBjbJR5vAzCadt6YeCzf\n8SwYYx9mjB1ijB2y2+3zXB5BEJUgnkzhzIQPPQ1GOAJRvHyh8L/JaV9EHoUzl5vWNqJvJiBH36fz\nz8+fBwPwqdvX5vzaDS0WcD67qwoIvbfnpnzQKBV44sgY+meKW5mXC55QDHq1Uh5jAQhJtioFyypc\nfZE4To17sWdlfc7naqvRY9IbzpirN+0Vfo87Vgg9xYfT7MLSjUSjefYms9miy7IKT3jDiCVSpLgW\nQKNSQK9WZllwpUI2kEdxPTflA+fCv6l37+nEE0fHMeLM7zrIdWNYDvkszXORgpmkTRSpJ/2fnz+P\ntho93rGzA/duaYUjEMP+AScuzlDhWi3oNUqE45nvt/6ZANRKhg4xJZsxhp5GE/ryXGs94XhZM1wl\nJCW3Ej2ukgsl3So87AxCq1JkuESIxUGnVkCjVBRXXFuEzIUzJaqu56f96LYZZbsxsTRQKxUFk+dz\nMd/CVQWgFsBVAD4F4HEmJDnkamDiBY5nH+T8e5zznZzznQ0N1GRNEItJ33QA0UQKH71pFeqNGvxv\nEbvwjD+ad9e8Q5xtOTlHmTsx5sGTxybwoeu7M3pb01kv/hFL72ed9kXhiyTwsTf0QK9W4mu/uVDy\n9wUICcjnppZmf6wrmH2DqFIq0FlnyCpcDw+5keLAVd25g63aa/WIJ3nGzva0P4Jmiw6b2izQqBQ4\nNDRrF7bnUC+arTp4w/GMHrkhh1BISUUMkRuzTpWtuIo3dfnCmSQL3cZWCz5yYw+URVTXSy5c9bnT\nj+cijT/qbpidZ9tWo0cyxfHxW1ZBo1LgDesaYdKq8P29gwhEE1S4VgmC4prZ43rRHkBXvRGqtJTg\nfCNxkikObziOmnm8z27b0Iy/u3M9dqwoPAarFLQqJcxaVYZVeNARQrfNSD32VQBjDBa9OrtwNWRb\nhYHSk4XPT/mpv3UJolYyxJMVtgrnYQzAE1zgIIAUAJt4PH3OQTuAiQLHCYKoYk6JNuHtnTV487Y2\n/PbsdM7wHwCIxJPwhuN5C1epf2muMvfcqSkoFQwfuTH/gO/2Wj3MOlVG4SoVnVevrMeHrl+JZ09N\n5eyDzcdXnzuP937/YN7RDtWMOxTLGIUj0WUzZhWuBwad0CgV2JZnNqo0c3RctAtLKdJNVh20KiW2\ntFtxKK3PVbLdNc6xCgPAVNqmxKBDuLmlwrUwFr06Q8nknBftcT0z4UONQY0Wqw5NFh3evqMdPz8y\nhmgiOxUWuPTC1axVgbESCldHEEoFQ6eYOA0Ab1jXgFWNJty/vR2AELxy24Ym/EF0b6wqkohMXB6E\nHtfswnXuxsKqRpO4aZg9wolzzMsqrNco8Sc3rMwokC+FepMGzmB64Rog50cVYdWrMq4lua5PVr0a\nHXX6khTXYDSBEVeI+luXIJfTKvxLADcDAGNsDQANAAeApwC8izGmZYx1A1gN4CCA1wGsZox1M8Y0\nEAKcnprnaxMEcZk4Me6BSatCV70Rb9vRjniS46lj4znPnfFlFzTpNFuFAmlqjuI64Qmj2aKT+/1y\nwRjD+mYLzk7OWtTOp4UxfOj6btQa1PjyM+eQKDGhbsARgCMQzervXAq4grGMYCaJbpsRQ85gxpzW\nAwMubOmwZtiK05EKV+nn4A7FEUuk0CRagXesqMPpCa+sxthzBJ1IFr/0TYlBRwh6tTKvdZwQsOhU\nGb2j0UQKMfE9nK/H9fSEDxtbLfLImnXNZiRSPG8Pqjd0aYWrQsFg1qqKhjMNOoLorDNkzPH8x3s3\n4dcfvy7j2D1bW+WPSXGtDuamCseTKYw4Q3Iwk8Rq8fc1V3X1iO+N+YQzVZp6k1a2CieSKYy4QrIL\ngFh85m7W5dtY29hiLSlZ+MI0BTMtVVRKBeJJXpaAUMo4nJ8A2A9gLWNsjDH2QQCPAVgpjsj5KYAH\nRfX1NIDHAZwB8ByAhzjnSc55AsCfAXgewFkAj4vnEgRRxZwc92FTmwUKBcP6Fgs2tlrwv0dy24Wn\n/dkzXNNpNGvBWI7C1RtBa03x3qb1LWacm/TJRdn5KT+aLFrUGDQw69T41O3rsH/AiYf/51hJxeuo\nSyjUToxlj9mpdvKNneiyGRGJp+TfRSCaEPpbu3P3twJAW42gjo25BWuv9PuR5vbuXFGLeJLjuKhm\nz/gjqDWoM4J+JDV92pepuHbZjAXn9hJCQJM/7SYuXYnI1eMaT6ZwfsqPja2zIWbSpk++nthLVVwB\nYf6ir8B4HkDocZ2rsCsVLKvv7LpVNtQa1DDrVBSYUyUY5iiuo64QEimeFa7WKY6uGZ+z4SclnZc7\nDmchqDNq5HCmcU8Y8SQn50cVYU2zCscSKYRiyZzXpw2tFgw6gnmvaxJS4bqOCtclh0Yp3B+UYxcu\nJVX4Ac55C+dczTlv55w/yjmPcc7fyznfxDnfzjl/Me38L3LOezjnaznnz6Ydf4ZzvkZ87IvlfWsE\nQVxu4skUzk760Ns2e4P8lm1tODXuw4QnW6WUipZ8hataqUC9UZtR3ADApDeMFmvu3tZ01rdYEIwl\nMSKOvjk/7cfaZov8+Lv3dOIzb1qHp09M4uM/PVowATkcS8pD6cuxF1cL+RRXKc1V6jU8POxGMsVx\nVZ5gJkCw6dlMGoyLv9O5v0ep7+zJY+PgnGfMcJWQzk1XrwcdQXk9RH4E9WH2xiz941w3bBftAcSS\nKWxsnX3vm7TCuBp/nvAkb3h+Y0oy1qlTF1RcUymOoRyFay7USgU+dtMqvGNnB21sVAl6tRLhNMVV\nclbMvZ5L1x33nJA9t5R0nuO6dLmxpVmFpcAwuhZVD+mFq7eAUi9d44rNaj835YderZRzNIilg+TE\nKccuXJmGAoIglh0Xpv2IJVLoba+Rj60Rww9y2WunfdKNTn4FpcWqywhnSqU4pryRvKFM6aQHNCWS\nKfTNBLJ2WD9yYw/+z13r8czJKXzqZ8fzPteoezaB9fgSK1zjyRT8kUROZUMeieMUbtZeG3BCpWDY\nvqIm69x02mr08u9UsvtKimutUYMHr16BnxwcxZefPYeZHIWrWafGhhYLnj01Ka9x1B1Gl41uJIoh\nWIXTFFex+FQrWU6r8Olx4SZOSt0EAJM4DzbX+dFEEuF4bkWjHKx6dcEe1ylfBOF4smRl609uWIm/\nv5vGuVcLek2mVTjXyC0AcvjS3KwDqVCsr4LCtc6ogSsYQyrFZwPDqHCtGnIVrjmtwqKrpFif6/kp\nP9Y0mSh8awki9bWXM8uVCleCIHJyUrTQpiuukqV30ptduM74ItCoFAVvkJssugzF1RGIIp7kJVmF\n1zaboWBC4TrkDCGWSMmFdDofun4lPnBNF548PpHXYjQqqra9bVacGvdl9IRWO5LSUWfM/jk3W3TQ\nqhR49JVB/MmPDuFnh8ewud0Kg0ZV8DnTZ7lOeSNgLLNX+XP3bMT7rlqB7708gKMjnoxROBLv2NmO\nU+M+nJ7wYtQVQjLF0W2j/sViCFbhhNzjIwUzNVt1Od+/pyd80KkVWJnWe2gWC9dcVt5CN4blUExx\nHSRla0mjV2dahV3idUaaiyqhUgrXeHewehXXeqNWTjkedARh0alyOlSIxUHaBEuJvyNgNrk8nSaL\nFm01evz3ayNZidcSkXgSZyd91N+6RJGswrESs0kAKlwJgsjDiXEvzDoVVqQlhEqW3glP9lBwaYZr\nIetfs1WbEeAzIaqvpViFdWolVjaYcGbSLwcz5etpuXFtAzjPbwOWCte7NrcgEE3IdrKlgCck/KHP\ndYOoUDC8Z88KaFVKjLnDsJm0eP/VXUWfs71Wj3FPGKmUMBan3qjNCNNRKBg+f99G/NG1wnPlCuB6\n87Y2aJQK/OzQqCOIIgAAIABJREFUGIackspBimsxLHoVYskUouIsO0nVbLHqcxauZya9WNdsgTJN\nXTBr8/e4+grcGJaDdU6gylxkSyalBC9JhDmuSXkDxSX2iOaycNYbM1N7AUGB1agUMOYJgbucSMW2\nMxjDoCOI7gYTWdKrCKtejRQHArEEvOGYfGwujDF86f5eXJjx43NPncr5XP/8/Hm4Q3Hct7VtQddM\nLAzzsQoX3oYnCOKK5dS4F71t1gz7jVGrgkWnyqm4TvuichJtPlqsenhCwrxPnVop98qWorgCgl34\nyLAbG1otULD8iaRbRXvzsVEPrumxZT0+4gpDr1biDWsb8ZVnz+HEmGfJpJvms/BJfPae8u2XbbV6\nxBIpOAJRTHkjcthSOowxfPbuDdjcbsWuruyZsDUGDW7b2IRfHB1Ho2gXJ8W1OFKwki8ch06tlBXX\nVqsOx0YyN1445zgz4cPdW1rnPIdkFc4uLKWNjvmMKUnHoi+cKjxoD1KK9BJGr1GCcyHVWqdWwhWK\nwaxVZQVrAcKm2dweV1cwhjqDpioKxHqj8B50BqIYdASxO88Ma2JxSJ8LLfe45tlYu3FNAx66aRW+\n+ft+7Omux1t3tMuPvXrRgUdfGcT7r16Ba1dl/50nqh+yChMEURFiiRTOTfozbMISLVZ9bsXVH8kb\nzCQxd96nXLiWoLgCQrLwuCeMQ0MudNmM0Klz7+7XGjXoqjfg+GgexdUdQkedHqsaTTBolEsqWdhd\npHCdD9JInFF3GFO+qDzeZi6MMbxlWzva84RgvHNXB7zhOH706jAsOhVqq2A0RrVjmWPzlVTN1hq9\nqMTOWuTG3GH4IomMYCZA2FACZm3G6VTKKmzVqxGJp/LOih1yBrGi3lAVhQtRPnrxWipZMl3BGOpM\nua8xtQYNXMHMTYx8gXGLgaS4TnjDGPeEaYZrlWERN+u84Ti8oeLXp4dvXY093XX4P788hZfOzyCe\nTMEXieOTjx/HSpsRf/Om9Zdl3UTlUZNVmCCISnBh2o9YMoXe9hyFa40up+Jq90VlpS0fLdbMeZ+T\n3gj0amXJiadSQNP+ASfW5uhvTWdLRw2O5StcXSF01hmgVDBsarUuqYAml9zjWsnCVRxx4Qlj2hdB\nY5ENiHxc22NDW40eU74I2fNKRFYfxILVH4lDpWByAFYwOlsonhZDStJH4QCARqWAVqXIaRWuWI+r\nrJLk7hsfdgapQFjCGESLbyg+W7jm2xyrM2b3uLpC1Ve4Hh52AwDNcK0ypGuRNxyHV7yeFGplUCkV\n+LcHtsGiV+ED//E6tn/+Bdz/7Vcx7Y/iX965Ne+McqL60VCqMEEQlWBfvwMAsKU9O422xarPSAYG\ngGA0AX80kTO0J51cimtLja7kAkdKUuW8+LDxrR01mPZFs4pszjlGXSG5WNvcbsWZCV/B8TnVhHTD\neKnjTdJpE1OdB+wBuIKxvIprMRQKhreJVi4K6SkNWXEVC0xfOAGzTjU7mzVNRZUCkFbnsLWbdbnn\nrMpW4QoorgBy9rkmUxyjrjBW1FNP81JFl0NxzZcQXGfUwhWMyf2w0vnVUrhKBfehIaFwpWtRdWFN\nswp7wjEYNcqMTIVcNFl0+N1f3YR/f+8O3LW5BZF4Ep+8bS22dhROzCeqm/lYhanHlSCIDDjneOLI\nOLZ21KCjLvtGtNWqgysYk/tUAWDGX3wUDjA7YkVSXCe8kZJtwoAQCiSNOig2bFz6g3Z81JMR/uQO\nxRGMJeXvrbfdimgihQvT/iwlqxpxBeMwapR5bdLzwagVbL1HxJ7K+RauAPD2ne34xot9WN1E/a2l\nINnmJJuvPxKHRa+GSSv8fv3R2ULRGYhCp1bI1uB0zDpVQcX1UsOZ0u19c5nyRRBLprCCFNcli5Q8\nnl64rm+x5Dy3zqhGLJlCMJaUZwhXU+GqVipQY1Dj/LQQ4tdFhWtVYTWkK67xkvvvTVoV7tjUjDs2\nNS/k8ojLCFmFCYK4ZM5M+nB+2p8RgpBOi6jOpauu0oibYj2uJq0KZq1KVlwnPeGSg5kAocdyfYtQ\nsOYahZPOhlYL1EqGo3PswlKicKdYuEqq8lLpc3WHYgsycqK91oCjorWuyTr/wrW91oCn//x6fOCa\nrgqtbHkz1yrsiwiKq0mbrbgKKljuzSGTVpUznMkbjsOsVWWkEF/SOnMUrsOiEkyK69JF7nEVk4UL\nKa6Soim5P2IJYbZ0tRSugNBKwbmw2WnKsdFDLB7pVmFfOH7Jm2rE0kW2ClPhShDEfPn54XGolQz3\nbG7J+XirWNRMemYtuLOFa/FE0SarDlPeCGKJFOyBaEmjcNLZ0VmLWoO6qLqjVSmxocWSlcw6Ihau\nHXXC666oN8CqV+cdnVNtuBeol6ytRg+/qNhdiuIKCJsGxWbHEgLyDNZwmuKqU8MkHg/G0grXAr97\ns06VM5zJF47LCselYNUL68mluA6L/6aocF266DXC7WA4nkQolkQ0kcr7XpOOSwnnngXou79UbEYp\n2ZzU1mrDqFFCqWCy4ipdW4grD9kqnKRUYYIg5kE8mcJTx8dxy7qmvPYdSXGdSFNch50hMFbaPNZm\niw5TvgimfRFwPttfWSoP3bwKz3/ihpIUpK0dNTg57kUyNXtRHHWLhavY48oYw+Z2K46PLhHFtUBo\nyqUgJQsDl164EqWjVyuhUjD4I5k9rqYcScGF7JgmbW6rsCccv+RgJiBdGc5+jSFnEGolK3sTiqge\n9GrJKpyYHbmVT3GVClexYJVmulZT4SoFNK2kYKaqgzEmzIUOJ+AJVeb6RCxNJKtwORkjVLgSBCGz\nt88ORyCW1yYMzCYDpyuupye86K435uy9m0uzVYdpX0QehdNShlUYEJTUYiFQEls7axCKJdE345eP\njbrCqDdqMta6odWCvhk/YonqD2hyhWILMmZGKlx1agUstAN+2WCMwaJXp1mFBcVVns2aVow6A/nt\nm2adOu84nIoUrrr8VuERZwgdYko3sTSRklnD8aRcuOZ7r0nHXQHhPFcVFq7SWijpujqx6FSzPa76\n6nnfEJcXtay4UuFKEMQ8+PmRcdQZNbhxTUPec3RqJeqMmgzF9fSED+tbcwd5zKXZosOMP4pRt1i4\nLqBKs7WjFgAy7MKjrhDa54RObWixIJ7kuGgPLNhaKoU7GF+QHtc2UYFutpSe8kxUBrNOlWYVTsCs\nU8sbK3N7XAtbhXP3uFaicNWpldCqFLl7XJ0hrMgR5EYsHeRxOLFkyYqrO1S9hWu9iazC1YxVr561\nCtO87ysWNVmFCYKYL95QHC+cmca9W1qhURW+NLRYZ2e5esNxjLnD2Fhq4WrVIZniOCn2lJYTzlQu\nXWL/avqc1lF3CB21mcWyNGbn7KRvwdZSCaKJJALRBOoW0Co83xmuxPyx6NTwR+JIpjgC0QQsehUM\naiUYm1Vcw7EkwvEk6kyFrcLpI0oAYRxOpUYnpSvDEpxzDDuDlCi8xEkfh+MsoriatSqoFEwuWKux\ncG0gq3BVY9GrMeOPIppIkVX4CmY+VmHygxEEAQB44ew0YokU3rKtrei5LVa9nM57ZkIo9kodJSP1\nTx4Z8aDGoF7QEB/GGLZ01OD1ITc450hxYXbsXb2ZwVPdNiM0KkXVF67STM6FUVyFwpX6Wy8/Fr0K\nvkhCVlfNOjUUCgaTZrZv1RkURk7ltwqrkOKCYiaptZzziqZ2SipJOs5gDMFYkoKZljiS4hqOJcF5\n4UKUMYZaoyZLcb3UWcGV5J4trVApFehpoLFc1YhVr8ZR0QlFqcJXLmQVJghi3uzrd6DeqEFvW/EC\ntLVGhwlRcT09IYQabcgz828u0izXs5O+sma4zpe7e1vQPxPAjw8MY8oXQTzJs+bTqpQKrG0y40yV\nF64LqWxYdGqsbDCW9PsnKotZq4YvHJfVTIvY32rSqeRidvZ3n2ccTo6e2Eg8hViycoqGJc3SLDHs\npFE4ywG1UgGVgiEcFxRXtZIVHCNTZ9DAmdbjWmNQywmh1UCNQYMHdndS20OVYtWr5WtVNW14EJeX\n+ViFSXElCAKcc+zrd+DqnnooSghYabHq4Y8kEIgmcGbSh0azFg3m4qNwgNnCNZHiC2oTlnj7znb8\n+uQkvvTMWTk8RkoUTmd9ixm/PTsDznnV3uxIcxMXIlUYAH77iRtRpd/6ssaiF0bZyIWreCOXnhRc\nLLnVLIYn+SNxeZ6yJywpYZV5v1j0arlYkRh2SqNwyJK51NFrlAjFkgjHkqgzagpeB+vSFddQbEHa\nF4jlS/pmGlmFr1woVZggiHlx0R7AjD+Ka1fZSjpfKjgnPWGcmfCV3N8KCDv10sXqcozPYIzh/75t\nM3RqJf7xV2cAAJ05gmTWt1jgCsYw44/mfJ7PPXkKH//J0QVdazHcolV4oXrJFApWtUX7csaiE3pH\nJTVTShQ2phWuUoJrob5DIHN8jmTrrdSNoTVHj+uQOAqrvZZG4Sx19GolIqLiWmxzrM6ome1xDSzM\nbGli+WKhwpUAoFaRVZggiHmwr98JALi2p7TCVSo4h5wh9M0ESu5vBYTiSBpn01rmDNf50mTR4Ytv\n7kUskYKC5R7Bs160OueyC58a9+KH+4dxcNC14GsthDQ3sdZIf+iXE2adGqFYUlawpNEzQlLwHKtw\nvnCmHFZhb6iyhatFl93jOuIMotWqh1alrMhrEIuHXqMUx+FE5Tmo+ag1quWNNHcotiB998TyhRRX\nAgA0lCpMEMR82NfvQHutHp0l9qlJs1z/cGEGyRTHhjIU1/SvvxxWYYm7NrfgnTs7sLm9Ru6rSGd9\ngWThrz53DoAQkDM3tTUfX/z1GXz52bOXsOJs3MHKWj+J6kCamyvNNpYKV5NWhWCaVVitZLKyOhdJ\npU1XXD1ikVmpVGGrXujFTf83MOQMUX/rMkGvVoobKPHiiqtBsAonUxzOYP75wgSRi/RitVLXJ2Lp\noVKQVZggiDJJpjgODDhxXYk2YUDoU2UM+N3ZGQAoyyoMAE1i4Xo5rMLpfOWtvXjio9fkfMyqV6Ot\nRo+zk/6M43v77Njb50C3zYh4kmcpTrkYcgTx6CuDeFH8+VQKVzAGs1ZVdFwRsbSQCtUxcbaxVMim\n97i6gtGCfYemHHNfK20VtuiF5OJ0VXfEFaL+1mWCXiNahQPRooVorVEDzgFPKAZ3kBRXojzSr0lS\nfz5x5aFUMDAGJKhwJQiiVE6Ne+GLJHBNGYWrWqlAg0mLSW8EZq0qZ9hRIVosl19xBYR+10LhU+tb\nLDgjpiQDQCrF8ZVnz6GtRo+P3tQDAHDMCafJxff2DiDFAUcgd7/sfCFL3vJEUkvHRcVVKkLnpgrn\nSxQGhGRiABk9qL5wZtjTpSLdbPrENfkicbiCMVJclwkGjRK+SAK+SKLgew2Y7bMfdoWQSHFSXImy\nkK4lZp1KDk0krjwYY1ArFYiRVZggiFJ5pd8BALimp76sr2sR+1PXt1hKSiJOZ1d3HTa0WKpuZuiG\nFjMGHUFE4kkAwK9OTOD0hA+fvH0N2sTvt1gxOuOP4H8Pj0GjUsAdipdlgZn2RfDrE5P4wtNn8OK5\n6azHXaRsLEukwnLcHYZRo5THipi0KgRiCaRKsGPm6nF1BmNQKfLbi8tep6iMSL2zI1KicI6wM2Lp\noVcrZbt6XZE+eqlwvTgTyPicIEpBKlypv5VQK1hZ90k0DocgrnBevejAumYzbKbSxtlItFp1OD6K\nsvtbAeD2jc24fWNz2V+30KxvsSDFgfNTftQZNfjcU6exqc2C+7a0oU+8QStWuP7HviEkkil88Lpu\nPLJ3EK5gTB5PkgvOOV48N4N//e0FnBqf7a99bdCJm9c1ZZzrDsXQUObviah+Zq3CoQzbnEmrAudA\nKJ6EKxgr6GxQKhgMGmWGVXjaG0GTRVf2xlI+ZhVXoXAdkme4klV4OaDXqGAXU9WLKa5SD2y/Xbgu\n0oYaUQ4WKlwJEbVKQT2uBEGURiSexKEhN64pMU04Hak/tdz+1mpGCmg6NurBR//rMJIpjm88sB0K\nBZNTNh15xuUAwg39f+4fxpt6W7BjRS0AyDeCuTg17sVbv/MqPvjDQ/CFE/i7O9fjlw9diz+9YSXO\nTvoRjiXlc+PJFPpnAlQkLEMkq7AvkpD7W4FZFTUYTZQ0ciQ9hRgAJr0ROQitEkg3m1LvrDTDtdRQ\nN6K60atnbwmLJZfPVVzJKkyUg1mrAmMUzEQIrWflpAqT4koQVzBHRtyIJlK4dlV5NmFgtj91Popr\ntdJZZ4BRo8RXnj2HcDyJRx/ciW6bUCjWGjRQMMF+mY//OjACfzSBj97YI9uNCym0n3niBCY9EXzp\nLb14+852Oe3Y4Y/iuy8P4OS4F7u76wAApyd8iMRT8ufE8sGSJ6hE6nV1BmLwRxNFi4P0MCcAmPJF\nKvrvU1ZcxcL1zKQPjWatvE5iaWPQzP4e60vsce0XC9diKcQEkY5CbGEgxZUo1ypcVHFljD3GGJth\njJ3K8dgnGWOcMWYTP2eMsX9jjPUzxk4wxrannfsgY6xP/O/BkldIEMSCcXTEAwDYuaL8YujeLa34\n6zvWYn3z8ilcFQqGdS0WhONJfPyW1bhl/axVV6lgqDNq8xaikXgSj74yiOtX27CpzSpbr/OFOSVT\nHBemA3jrjna8e09nxoierZ01AICjI2752KEhYYbsTlHJJZYPkvoAABbdbPEgKbEjLkHZzDfDVcKk\nU8s2Xs45Jr1hOQitEsg9ruE4AtEEfnd2Gm/c0FTkq4ilgk49O4u3mLqvUyth0Cjl92axua8EMZeb\n1jZiT3f5m+bE8qJcq3Ap26Q/APBNAD9KP8gY6wDwRgAjaYffBGC1+N8eAN8BsIcxVgfgcwB2AuAA\nDjPGnuKcu0EQxKJxfNSDbpsR1nnYdRotOnzsplULsKrF5Z07O7CmyYyHb1md9ZjNpIHdn7sQ/fmR\nMTgCUXz0pq3CuWapcM1d6I64QoglUljVaMrxOlp01hnkjQUAeH3IhRX1BjRWWaAVcekoFAwmjQr+\naCJDcTVqpMJV6CUtprhadLOKqzccRySeQnMFrcJmnVBg+yIJPH9qCpF4Cvdvb6vY8xOLiz6tcC3F\nwllr0GDcE4ZWpcj4WoIohX97YNtiL4GoAtRKBRKVTBXmnL8MwJXjoX8F8NcQClGJ+wD8iAscAFDD\nGGsBcDuAFzjnLrFYfQHAHSWvkiCIBeH4mAdb2q2LvYyq4h27OvDl+3tzBtrYTFo4g9mFaDLF8b2X\nB7Cl3YqrVwo7yEaNEjq1Im9PbN+0MC92TZM55+PbOmtwZMQNzjk45zg05Jb7Zonlh2QXztXjKiuu\nReybJu3s+JxJbwRAZWclKxQMJq0KvnAcvzg6jo46PbZ30ntyuWDQCMWnVa/OcIDkQ1Jl6wvMFyYI\ngiiESsEQW+hwJsbYvQDGOefH5zzUBmA07fMx8Vi+47me+8OMsUOMsUN2u30+yyMIogSmvBFM+6LY\n3F6z2EtZMthMmpwK6rOnJjHsDOGjN/XIN3CMMbHQza3QSinFuRRXANjeWYsZfxST3ggGHUE4gzHs\n6qL+1uWKZAu2pCmu0mxWKQSpnHCmKbFwraTiCghFTd+MH/suOvCWrW1UsCwjdGLhWupoGylJmBKF\nCYKYL5oFsApnwBgzAPg7ALflejjHMV7gePZBzr8H4HsAsHPnztK1Y4IgyuL4mGBD3dJBhWup2Exa\nOOZYhTnn+M5LF7GywYjbNjRnn5/HKtw/E0CrVZc32Gab3OfqQVC0f+7qInVruSIVrBnhTHMU1+Lh\nTGrZKjyruFa2cLXo1NjX7wQAvHkb2YSXEwZ1eYWr9H6kGa4EQcyXiluFc9ADoBvAccbYEIB2AEcY\nY80QlNSOtHPbAUwUOE4QxCJxYswDlYItq3E2C029SYtwPCkXkgCwt8+B0xM+fOSGnix7sc2kzTsO\np2/Gj1V5bMIAsK7ZAq1KgaMjbhwadqHWoEZPQ251llj6SBbhdKuwUSsUEuPuMJQKVjSB0yT2uKZS\nHFO+CBQMaDBXdu6vtIYtHTVYSe/HZYW+XMXVQIUrQRCXxoJbhTnnJznnjZzzLs55F4SidDvnfArA\nUwDeL6YLXwXAyzmfBPA8gNsYY7WMsVoIau3z5b42QRCV48SYF2ubzRlJkkRhbGJypjMtKfi/XhtG\no1mL+7a1Zp3fYNbkTBVOpTj6ZwJYnccmDAj2md42K46OesT+1jqyZS5jcimuWpUSGqUCiRRHrUGd\ns+868zmEojcQS2DKG0aDWVtSr2JZ6xQL67dszX6/E0sbuXAtcbRNnTjrlQpXgiDmS7lW4VLG4fwE\nwH4AaxljY4yxDxY4/RkAAwD6ATwC4GMAwDl3AfgCgNfF/z4vHiMIYhHgnOP4qIf6W8tESgq2p9l/\nz035sau7DlpV9gaAzaSFKxhFMpVpgxlzhxGJpwoWroBgFz4x5sGAI0g24WXObI9rpnVcsguXUhxI\ntvNAJIFJbwTNC5BAXaPXQKlguHsLFa7LDSkZuNjYJQmpt7XUQpcgCGIu5VqFi/a4cs4fKPJ4V9rH\nHMBDec57DMBjJa+MIIgFY8gZgi+SoEThMmkwZY64icSTGHWF8OatuXv9bCYtUhxwh2LyXFdAsAkD\nwOoCVmEA2NZZi0f2DgIAdlIw07JGShVOV1wBoRh1BWMlFa7S1/ojCUx5I1jZYKz4Oj94fTduXNuQ\n8X4mlgdy4Vqq4ipZhWmGK0EQ80SlYJVVXAmCWH4cH6VgpvlQL96gSYXroCOIFAd68iinNlPuWa7F\nEoUlpIAmjUqBTW3Ui7yckazCVv0cxVVUUeuLjMIBZtXZQDSOKW+koqNwJNY0mXFnb0vFn5dYfKTN\nk0ZLaZsSdaS4EgRxiahVirJ6XMtOFSYIYulzfMwDnVpR1KpKZCIVD1KP60W7WIDmCamRemId/hiQ\nFjjcNx1Ak0VbNGynxapHi1WHjlpDTisysXxY2WCEUaNEgznT3jsfq/CkNwJ/NFHxUTjE8qbbZsR3\n37cDN61tKOn8bZ21+ItbVuOGNaWdTxAEMRdNpa3CBEEsP46PetDbZoWqwsEtyx2NSgGrXi0rqP0z\nATCGvJZMqSd2ruLaP+PH6sbCNmGJbzywLcs+Siw/bl7XiMN//8assDSpGC2lcJX6Y/umhQ2VSo/C\nIZY/t29sLn6SiEalwCfeuGYBV0MQxHKHrMIEQRQknkzh9ISPgpnmic2kyShc22v1eZOZc1mFUymO\nvplAUZuwxM6uOqxtLq3IJZYujLGc7yPZKlxCH6GkzvaLVvSFCGciCIIgiEqhrnSqMEEQy4sL035E\nEynqb50n9SatPOKmfyaQ1yYMCAqYRqnISCGe8IYRiiWxuols2kRx5mMVlsK/FqLHlSAIgiAqhUap\nQLwMqzAVrgRxhXFizAsA2NxGicLzocGkhSMgjLgZdAQLKqeMMUGh9c/OcpWCmUq1ChNXNuYyrMJG\njQqMCaFhQOkhOwRBEASxGJBVmCCIgpwc98KsU2FFvWGxl7IkEQrRKMbdYUQTKfQUUFwBoc813Src\nPy0VrqS4EsUpJ1VYoWAwaVSIJznqjJq8FnaCIAiCqAbIKkwQREFOjXuxqdUKxthiL2VJUm/SwhdJ\n4MykD0DxkTY2U2bh2jfjh82kRW0JChpB2MxaKBUMjebS1FOzaC2m/laCIAii2lGXaRWmVGGCuIKI\nJ1M4N+nHB67tWuylLFmkwKWDgy4AKK64mjQ4PeGVPz8x5sXaZlJbidJ4y7Y2bGq1lrzRYdKpAC8l\nChMEQRDVj1pRnohCiitBXEFcmPYjlkxhE/W3zhtpNutrg07UGzVFCwqbSQtnIIZUimPUFcK5KT9u\npLmHRIno1Er0tpf+71WyFtMMV4IgCKLaUavKK0WpcCWIK4hT44Ly10uF67yRZrOemfShp4Q+1XqT\nFokUhzccx2/PTgMA3rih9FmJBFEO0sxfUlwJgiCIaketpMKVIIg8nBz3wqxVYUUdBTPNF5sYksN5\ncZswMKvQOgJRvHBmGqsaTei2GRd0jcSVizQ+p5lG4RAEQRBVjkZJVmGCIPJwctyHjW0WKMrsKSBm\nsZlnrcHFgpkAYXwOAFy0B/DaoAu3bWhasLURhEUsXElxJQiCIKodFSmuBEHkIp5M4eykj2zCl4hB\no4JBI4wZKaVwlazFPzs0hmSK441UuBILCPW4EgRBEEsFsgoTBJGTvukAYgkKZqoEUrJwT0Nxy690\n7u/Pz6DRrMWW9poFXRtxZVNr1ECpYDQOhyAIgqh61GVahWkcDkFcIVAwU+WoN2lg90fRWkIfYY1e\nDaWCIZniuGV9E9m0iQXlPbtXYEdnLYxa+vNOEARBVDflKq70l20Z4ArGEIwm0LFAgTtHR9xQKhg2\nk1K0pDk57oVJq0JXPQUDXSprm8wwaJQlFaEKBUO9UYMZf5T6W4kFx2pQY8/K+sVeBkEQBEEUhQrX\nK5DPPXUaF6b8eP4TN2QcdwVjiCaSaLnEdMm/+tlxaJQKPPfwDcVPJqqWUxNebGylYKZK8IU3b0KK\n85LPt5m0CEYTuLqHCgqCIAiCIAiArMJXJCfGPHD4o1nHP/fUabzSZ8dzD9+Apnn2O9n9UQzYgwCE\ncR5Svx6xtEiIwUzv3bNisZeyLCh3h/CuzS2IJ1PQqZULtCKCIAiCIIilBYUzXWEEowkMO0MIxpII\nx5IZj426QnCH4vjLx48hlSpdHUrn9SGX/PGBAeclrZVYPPrtAUTiFMy0WDz0hlV4+NY1i70MgiAI\ngiCIqoEK1yuM89N++WNHIFN1FRRSDfb1O/Hdlwfm9fwHB13Qq5Uwa1XY10+F61LlF0fGoWDAzq7a\nxV4KQRAEQRAEQZRtFabCdYlzbjJ34co5h90fxf3b23FnbzO+9pvzOD7qKfv5Dw66sH1FDfasrMP+\ni46KrJm4vDgDUfxo/zDu3dKK9tqFCfAiCIIgCIIgiHIgxfUK4+ykT/7YEYjJHweiCUQTKTSYtPjy\nWzajyaJtWQJbAAAgAElEQVTDZ544CV5GoIwvEsfZKR92ddXh6h4bhpwhjHvCFV0/sfA8sncQkUQS\nf3bzqsVeCkEQBEEQBEEAoMJ1WfPcqUn86wsXMo6dm/Kh1SoEL6UrrnYxrMlm1sBqUOOhN6zC2Ukf\njpWhuh4ecoNzYHd3Ha5dJaSh7r9IduGlhCsYw4/2D+Huza1Y1Whe7OUQBEEQBEEQBACyClclA/YA\nfnl0/JKf57F9Q/jGi31wBwVllXOOc5N+XLvKBgAZycJS4dpgEorae7e2wqBR4qcHR0t+vYNDLqiV\nDNs6arGm0Yx6owavkl14SfHoKwMIx5P4c1JbCYIgCIIgiCqi4oorY+wxxtgMY+xU2rF/ZoydY4yd\nYIz9gjFWk/bY3zDG+hlj5xljt6cdv0M81s8Y+0xZq1zi/PsfLuITjx9DIJqY93MkkimcHPMixYGX\nLswAAMY9YfijCWzpqIFZp8pQXCXbsM2sAQCYtCrcvbkFvzoxUfI6Dg660NtmhV6jhELBcFVPPV7t\nd5ZlN/6np8/gx/uHSj6fqAypFMdrA0788NVh3LmpBWuaSG0lCIIgCIIgqoeFsAr/AMAdc469AGAT\n53wzgAsA/gYAGGMbALwLwEbxa77NGFMyxpQAvgXgTQA2AHhAPPeK4OS4D5wDJ8e8836OvpkAwnFh\n3M1vzwqFqxTMtL7FggaTNqPH1e6PAAAa0uauvmt3J0KxJH51fKLo60XiSZwY82BXd5187Jqeekz5\nIhh0BEtaczyZwo8PDOPJY8Vfj6gMkXgSX372LK776ot45/cOgAF4+NbVi70sgiAIgiAIgsig4lZh\nzvnLAFxzjv2Gcy7JdgcAtIsf3wfgp5zzKOd8EEA/gN3if/2c8wHOeQzAT8Vzlz2ReBJ94siaE2Pl\np/pKSL2pe7rr8PJ5O+LJFM5NCcFMa5vNsJm0WYqrUsFQa9DIx7Z11GBNkwk/PThS9PWOjngQT3Ls\nyShcBUvyqyX2ufZNBxBNpDDkLK3QJS6dl87b8d0/DKCn0YSvv2srDvztLVhNaitBEARBEARRZagW\nIZzpjwE8K37cBiC9iXJMPJbveBaMsQ8zxg4xxg7Z7fYKLG9xOT/lRyIlWGuPX0rhOuJBjUGNP7q2\nG/5oAq8PunB2yo/OOgNMWhXqTZqscKZ6owYKxexOBmMM79rVieNjXpyZ8OV6GZnXh1xgDNixYrZw\n7ao3oMWqw77+0vpcT44L368jEIM/Ei/n2yXmyUV7AADwnffuwH1b22DUqhZ5RQRBEARBEASRjeZy\nFq6Msb8DkADwX9KhHKfxAsezD3L+Pc75Ts75zoaGhktZXlVwakKwB2/pqMHx0flbhY+PebClvQbX\nr7ZBo1Lgd+dmcG7Sh3XNgppmm2MVdgSiaDBrs57n/u1t0KgU+PGB4byvdW7Kh/95fRTrmi2w6tXy\nccYYbl7XiJfO2xGKFe+TPZFmjR52hkr6PquVRDKFv//lKZyf8hc/eREZsAfRZNHCRAUrQRAEQRAE\nUcVctlRhxtiDAO4G8B4+m9YzBqAj7bR2ABMFji97To37YNWrcVdvM8Y94QxVtFSC0QQuTPuxtaMG\nRq0KV6+sx3OnpjDoCGJdiwWAULh6w3HEEikAgD0Qhc2UXbjWGDR42452/OTgCL7xu76MoCXOOf7n\n9RHc9819iCVT+Kc3b8z6+rs3tyIcT+LFczNF131y3CuvodS+2Grl6KgHPz4wjJ+UYLNeTAYcAay0\nmRZ7GQRBEARBEARREKXiMhSujLE7AHwawL2c83Qp7SkA72KMaRlj3QBWAzgI4HUAqxlj3YwxDYQA\np6fm89pLjVPjXmxqs2BLuxC8PJ8+1xNimvDWTuE5bl3fiHFPGCkOrJcUVzE92BkUCmO7P7fiCgD/\neO9GvGVbG772wgV84emzCEQTePLYON7/2EF8+ucnsbOrFs98/PoMm7DE7u46NJi1ePr4ZME1RxNJ\nnJ304a7eZgDA0BIvXF++INjWq3mOLeccA/YgVjYYF3spBEEQBEEQBFEQxlhZduGifkLG2E8A3ATA\nxhgbA/A5CCnCWgAvMMYA4ADn/COc89OMsccBnIFgIX6Ic54Un+fPADwPQAngMc756XK+saVILJHC\n+Sk//ujaLmxqs0LBgOOjXty8rqms55GCmaTi9w3rGoEnhR/f+jTFFQAc/hiaLTo48iiugBA9/bW3\nb0GNQY3H9g3ih/uHkExxtFh1+PQd6/DhG1bm3QFRKhju6m3BTw6OIBBN5LWkXpgKIJ7k2N1dj+dP\nT2NwiQc0vdwn9PWen/YX/NkuJs5gDN5wHCsbSHElCIIgCIIgqp9y7MJFC1fO+QM5Dj9a4PwvAvhi\njuPPAHim5JUtA/pm/IglU9jUZoVRq8LqRnNGQNOUN4Kzkz7cuKYhI0RpLsdHPVhRb0CdUVBV22sN\nWNdsxrAzhM46A4C0wjUYhTccRzzJ8yquAKBQMHz27g3oaTDhoj2AO3tbsKOztuA6JO7e3IIfvDqE\n356Zxpu35czYwgkxmGlzuxVdNsOSVlw9oRhOjHlw09oGvHTejgMDTty9uXWxl5XFgF34GfeQ4koQ\nBEEQBEEsAcpJFqYElwXk1LgQTrSpzQoA2NJhxW/PzoBzDs6Bj/znYRwb9WBtkxl/edsa3LahCaKC\nncGxUQ/2rMy07T586xoMOYNyoWkzCUWtwx+V+2ilY/lgjOG9V60o+/va3lmLFqsOT5+YyFu4nhzz\notagRnutHt02I54/PV3261QLr/Q7wDnwsZtW4dCQG/svVmvhKiQK95DiShAEQRAEQSwB1GUUrpUY\nh0Pk4dS4DyatCitEVXRzew1cwRjG3GE8eXwcx0Y9eM+eTsSSKfzpjw/jT398OOs5prwRTPkisk1Y\n4o5NzfjIjT3y57LiGohhxi8UroUU10tBIdqF/3DBDm84jkg8iZ8fHsPh4dlxvyfGvOhtrwFjDF31\nRrhEG+tSZO8FB8w6FbZ31mBXVy32D1Rnn+uAIwiNSoHWGv1iL4UgCIIgCIIgiqKppFWYmD+nJrzY\n2GqRVVGp+Nx/0YmvvXAeW9qt+MJ9m5DiHJ9/+gx+tH8YrmBMtgQDwLFRN4DZYKZ8GLUq6NVKOAJR\neSxO4wIVrgBw95ZWfP+VQXzqZ8dxdNQDuz8Ki06F5z9xA2oNGlyY9uPmdY0AgC6bYF0dcgSxpaPw\n91FtcM6xt8+O61bZoFIqcHVPPX5/3o5pXwRNFt1iLy+DAXsA3fXGshPaCIIgCIIgCGIxKMcqTIrr\nApFIpnB20ifbhAFgbbMZGpUCX3zmLKZ9UXz2no1QKBhUSoVsPT0y7M54nqOjHqiVDBvEEKZC2Mwa\nOAJR2P2SVXjhCtct7VZ01hnwmzPTWNdsxv/3zq1IpDg+9bMTOD3hQyLF0dsufO/dUuF6GQOaXr3o\nQP/Mpc9cvWgPYMIbwfWrhZnCV6+0AajOdGFKFCYIgiAIgiCWEhUNZyLmx0V7EJF4Cr1phatGpcCG\nFguOjXpw39ZW7FhRKz+2ud0KlYLhyIgbt26YTR0+MOBCb5sVOrWy6GvaTFpRcY1CrWSw6tWV/abS\nYIzhh3+8G9FEEuuahaI6FEvib39xEp6woPhuFgvXzjoDGLt8s1yjiSQefOwgUhx431Ur8PCtq1Fj\nKNzvm4+XLwhpwtevFgrWDa0WWHQq7L/ozNvfuxjEEikMu0K4s7dlsZdCEARBEARBECVRTo8rFa4V\n5H8Pj+HbL/VjpW02HGdTW6ZSuru7Dhem/fj0HesyjuvUSmxsteBwmuLqDcVxcsyDP7t5dUmvbzNp\nMeoKwe4XxrXkCnqqJJKSKvHA7g789uw0Xjw3A5tJi2bRSqtTK9Fi0V22ZOFRVwjxJMeWjhr8aP8Q\nfnlsHN997w7sWVlf9nPt7bNjpc2IDrFPWalg2LOyvur6XEdcISRTnBRXgiAIgiAIYsmgUZFV+LLj\nDsbwhafPIJHkGHYG8fvzM2gwa9Fty0x4ffjW1XjhL2/MGaCzrbMWJ8a8iCdTAID9A06kOHDdKltJ\na7CZZq3CCxXMVAjGGL7y1l7UGtTY3lmTUTh32YwYcoYuyzoGHcLr/MM9G/Drj18PrUqBb790sezn\n8UXiODDgktVWiatX1mPEFcKY+/J8P6UgJQrTDFeCIAiCIAhiqaAqI5uFFNcK8a+/vQB/JI7H//Rq\nrG02I5pIIpVCVlCOQaOCQZP7x75jRS1+8OoQzk360dtuxb5+BwwaJbaWGGhkM2nhCsYw7YssWrJs\no1mHpz9+PXRzdk+6bEY8c3LysqxBUna7bUbUGDR487Y2PLp3EO5gDLXG0i3D//KbC4gkknjbjo6M\n41f3CMrtawMutO8wVG7hl8CA+D2T4koQBEEQBEEsFWgczmXm3JQP/3lgGO+9agXWNpsBAFqVEnpN\n8b7UdLaLPa9HRgS78L5+B65aWV+yhG4zaZHiQkhPwwIGMxWjrUaP+jmv311vhCcUhyck9L/+5OAI\nXpun3fbAgBOT3nDexwedQdQa1HJf6z2bW5FIcTx3eqrk1zgx5sEP9w/h/VetkEOmJFY3mqBWMvTN\nBOa1/oVgwB6AzaSFRbdwfc0EQRAEQRAEUUnIKnwZ4ZzjC0+fgVmnxiduXXNJz9Vq1aHZosPhYTfG\nPWEMOIK4tkSbMDCbIhxLphbFKlwIaSTOoCOI/9g3iL954iQe+u+jCEQTZT2PNxTH+x59Dd/6fX/e\ncwbtQfn1AGBjqwVd9QY8fWKipNdIpjj+9hcn0WDS4q9uX5v1uEqpQEed4bL17JbCRXsQPaS2EgRB\nEARBEEuIcqzCVLheIi+em8G+fic+cevqsmyouWCMYfuKGhwZcWNfn5BmW2p/KyD0uOb6uBrotgmW\n2sf2DeHzT5/B9s4aOAJRfPcP5fWe/ubMFOJJjlFXfsV1yBlEd/1sEccYw92bW7H/ohOOQLToa/x4\n/xBOjfvw2Xs25FUwu+uNl3W8TzEG7AHqbyUIgiAIgiCWFGQVvoy8eG4GZp0K77lqRUWeb3tnLcbc\nYTxxdAw2kxZrmkovRmxpKmuDWVeR9VSKjjoDFAz41fEJbG6z4r8+dBXu2dKKR/YOFLT9zkXqkx33\n5P6acCyJSW8kK/H47i0tSHHg2VOF7cKReBJf+80FXL/ahrsKjJbpshkx6AgileIlr32hcAdjcIfi\npLgSBEEQBEEQSwo1WYUvH33TAaxpMpe1W1AIqc/1wIAL162qL2ukjc04W7hWm+KqVSnRVW9Ee60e\n339wF/QaJf769rVIceD/PX8h59f8YN8gXr3okD/3huN4pd8BpYJh3B0G59lFo6SCds0pXNc2mbGq\n0YSnjxe2Cw/Yg/BHE3jnro6CP/tumxHRRApTvkjB57scDDikRGEqXAmCIAiCIIilg5qswpcHzjku\nzPjLUkWLsbHVIjcpX7e6oayvtehV0IgFdLX1uALAIw/uxBMfu0ZeW0edAX90bReeODqGU+PejHOD\n0QS+8OuzePinxxAU+2BfODONeJLj7s0tCMeTcIfiWa+RniicjmAXbsHBIRemCxSbfTN+AMCqxsK/\nU+n5q6HPdcQljOXprKPClSAIgiAIglg6kFX4MuEIxOAJxbGq0Vyx59SqlOhtE1Jsr11VX9bXMsZQ\nLyqttiosXHsaTGicY2F+6A2rYNWr8d2XBzKOHxlxI5nimPFH8e2XhCCmX5+YQFuNHm/a1AwAmMhh\nFx7Mo7gCwN2bW8E58HyBdOGLMwEoWHbhOxc5bKoK+lylft/22sUZgUQQBEEQBEEQ82HZWYU555jx\nXx5L5qv9DrztO69iylv89SR1rpKKKwC8dXs77uptQYu1/ELEZtJCq1LArF0aI3otOjVuWdeEvX12\nJNP6RV8bcEGpYLhtQxMe2TuIU+NevNLvwF2bW9BeKwQ9jbmzC9chRxANZi1MOb7/VY0mWHQq9BcY\nY9NvD2BFvRFaVeFRRi0WHbQqRVUorqOuEBrNWujU5Y1fIgiCIAiCIIjFZNlZhfcPOHHVl36HfrFQ\nXEhe6Xfg0LAbf/yD14uOaumbFgqg1RVUXAHg3Xs68a33bJ/X19pMGthM2rJ6YxebG9bY4AnFM+zC\nBwdd2NRqwefv2wQlY/jAfxxEPMlxZ28L2mqEgj5XQNOgIzNReC6tNXpMeApYhacD6CkhnVehYOiq\nFwKaFptRdwgddYbFXgZBEARBEARBlMWyswoP2INIcSGwaKGZ8IRh0ChxftqPP/vvI0gkU3nP7Zvx\nw6xToclSPbbcD9/Qg0+/ad1iL6MspJE/e/vsAIRk32OjHuzurkOzVYeH3tADRyCGtho9trRbUWNQ\n///t3Xl0nOWV5/Hv1b5akiXZlmRb8r472CzGgGkCYc9AejrMBCYT0pMeus/AIZkeepqmmZMmSXfS\np5cz0xNOcjKEBAINIck0IR3WhmSgAyZ4Axuw8SrL8iJrtXbJ0p0/6i25bJWksihJr6Tf5xwdSW+9\n9dat8uOybz33uQ/Z6anUxplxPVjfQVXJ0ElcWUHWkF2Me/v6OdTQzpIEZ9CrSnLGPHF1d96taR62\ne/GRpk7mqUxYRERERCaZKVcqHN17c/vh5jF/rNrmTtZUFPD1W1fz6z0neegXHwx57kdBR+EwzW5u\nXFTMLZ8on+gwzktxXiarK2bw+keRDsI7aprp6etnw4LIGt8/2LSQ5XPyuWPDfMwMM6OiKHvQGtfW\nrl7q27rjrm+NKivM5tgQZeDVDR309jmLE9wPtaokl5rGzrNKnJNt2+Fmbn34N3z7V/vi3n66r59j\nLV0D5dMiIiIiIpPFlCsVjiauO2qaxvyxjjZ3UVGYzR0b5nPnxkp+tLmaujhdaN2dvSdaWTJC91lJ\nzKYlpWw73ERrVy+/PdiIGVxcNROArPRUXvzKldz9ycUD51cUZg8qFT5UH+muu3CYxLW8IIvG9h66\nevsG3RZd+zpSR+GoBcW59PT1x20SlSzbD0fG/D+8upedR1oG3X6spYu+fmfeTM24ioiIiMjkcn3Q\ndDURkyNxbe0BYP/JdlribIGSLKf7IvtylgdrKG9eG5m53Fk7OGFoaO+hqaOXJbOTu751urpySSmn\n+53NBxp5+2ADy+fMoCAnfcjzK4oGJ67DdRSOija8ijfrGl1DvSjRxDXaWXgMy4XfPdJCSV4mJXmZ\nfOXH2wcl3DXBVjjzNOMqIiIiIpPMqvKChM+dHIlrW/fA3qbvHhm7cuETrd309TsVwXrBVeUzMIuf\nuH50Ymw6Ck9X6ysLyclI5bXdJ9ha3cSGBTOHPb+iMJvG9h46es400Ip2+K0cZj/TssLIdjzH4syS\n7qtro7wgK25H4njGI3HdeaSZCysL+dvbPsH+k+1864XdZ91e0xQkrmrOJCIiIiJT2KRIXBvae9i4\nsBizyPrHsRIt+YzOuOZmprGwJPesbrdR0bLSZHcUnq4y01K5dGExP9tWS1dvf0KJK3BWh+BD9e2U\nFWSRnTH0tjDlwYzr0XgzrifbWHweM+il+ZnkZqSOWeLa0tHLoYYO1s4t5IolJXzxsip++Oahs8Zj\nTWMnqSlGWUHWMFcSEREREZncJkXiWt/azYKSXJbMyhtY8zcWoolrReGZJGBNRcGQM65h6yg82V25\npISe05EuzhePlLgWDd4S50B9+8As6FDmFMSfce3vd/bVtSXcmAnAzKgszuVQw9gkrruORsbd2rmR\nEop7ro6s8f3NvvqBc2qaOpgzI4u082glLiIiIiIy2YT+f7tdvX20dp+mJC+DC+YVsqOmGfex6eJ6\npOnsGVeA1RUFnDjVTV3r2TN0e0PYUXiy27S0FIBFpbmU5A3/gcDAXq7Bn1l/v3Owvn3Y9a0QafRU\nnJsxaMa1trmTrt7+hBszRS0oyR0oUU6294JmTGsqIolrSV4mVcU5bIv58KamsUONmURERERkygt9\n4hrtKFySl8kF84po6ujlcNCQZij9/T4o0UzE0eZOinLSyck4s8YxmjScWy68t65NHYWTbGFJLsvn\n5HPtypG7i83KzyQ1xahtjoyFHUeaaens5aLKohHvOyfOXq4Dpd/nuWZ5QUkuNU2d9A6z3+9o7axt\nZv7MHApzMgaOrZ9fxNbqMx/eRPZw1fpWEREREZnaRkxczexRM6szs10xx2aa2Stmtjf4XhQcNzP7\nBzPbZ2bvmdn6mPvcGZy/18zuTDTA+rZIR+GSvEzWzS8ERt7P9aX3j7Pxm6+dd1lxbXPnWbOtAKsq\nCiINmo6ciompm8b2HnUUTjIz45f3buJPb1g24rlpqSnMmZE1MOP60q7jpKUY16yYPeJ9ywqyOdZ8\n9gcbA1vhnEepMEQ6GPf1+0B332R670gLa+ae3WltfWUR9W3dHGnqpKu3j7rWbjVmEhEREZEpL5EZ\n1x8CN5xz7H7gVXdfArwa/A5wI7Ak+LoL+A5EEl3gq8AG4BLgq9FkdyT1rcGMa34mS2fnk5OROmKD\npg+OnaKv3/nGLz88r7Lio82dAyWoUXmZaSwoyT1rneveE9HGTJpxTbbUFEu4/LqiKJujzV24Oy++\nf5zLFpdQkD30FjpR5YVZHD1nxnVvXSsleRkU5WYMca/4FpREksZo4jtax1u6uOybr/Lm/sj61YYg\nOV1bcXbiemEwo7y1ummgtF2lwiIiIiIy1Y2YuLr760DjOYdvBR4Lfn4M+EzM8cc9YjNQaGZlwPXA\nK+7e6O5NwCsMTobjamiPlgpnkJpirKkoGHEmtbohMvu1tbqJF3YdT+RhcHdqmwbPuEKkXDi2VPjD\nY5HZ16WacZ1Qcwsje7nuPt5KdUMHN6xKbAPjsoJsWrtO09Z9ZiudfXVtLDrP2VaIjIGC7HT+20/e\n5ec7ake9/vrtgw0cbenioec+oK/fBz4oOXfGdensfPIy09ha3XRmKxyVCouIiIjIFDfaNa6z3f0Y\nQPB9VnC8AqiJOe9IcGyo44OY2V1mtsXMtpw8efKsUmGAdfOL+ODYKd451Miprt64wVU3tHPZomKW\nzc7nWy/spvt034hP6FTnadp7+gbNuEIkcT1+qouTrd10n+7jB28eZPmcfHUUnmAVRdkcP9XFL987\nhhlcu3LkMmGIzLgCHA9mXd2DjsKjmEHPz0rnuXsuZ+nsfL789A7ueWr7kONyOB8cjXwYsudEK89s\nqWHnOY2ZolJTjAvmFbLtcBNHgvLkuUpcRURERGSKS3Zzpng1nj7M8cEH3b/n7he5+0WlpaWcbO0m\nLzONrPTI3pyXLy6mt8+57btvsfYvXubqv/s1LR1nJwrVjR0sKMnlgZtXcLixgx+9VT1i4NFtVaLb\nrMRaHdOg6fE3q6lp7OTPb16hjsITrLwwm75+5+l3DnNx5UxK8xP7IKGs4Ow9YA/Wt3Oq6zQrymaM\nKo7K4lye+cON/Mn1y3hp13HufnIbp8+zWdOuoy2sqSjg4qoi/u7lj3jrQAMLS3PJzxpc+rx+fiEf\nHjvFnhOtZKSlMCvB5y0iIiIiMlmNNnE9EZQAE3yvC44fAebFnDcXODrM8RHVt3VTkndm3eGmJaW8\nef/VPPrFi/j9y6s4cLKd7TVnSodbOnpp7uilsjiH31laypVLS/lf/7KXJzZX09U79MxrdA/XeKXC\nq8ojCc3re0/yv1/by1XLStm0pDSR8GUMRWfH69t6uH51YmXCAGXRvVyDGdc39kbWlV6xuGTUsaSm\nGHd/cjHf+Mxq3thbz189vzvh+7o7u2pPsbpiBg/ctIL6tm7e3N8waH1r1PrKIvodXtx1nLmF2aSk\n6AMUEREREZnaRpu4PgdEOwPfCfw85vgXgu7ClwItQSnxS8B1ZlYUNGW6Ljg2okjievaMUnlhNlcv\nn829Vy8B4KMTrQO3VTdG9tSsLI7s5/n1W1exsDSXB5/dxRV//RqPvHEg7jrE2oHENWvQbflZ6Sws\nyeWHbx6irfs0D9y0IpHQZYzFzo5fvyqxMmGIbIdjdmbG9Y299cybmU1l8ccvuf3cJfP54mVVPPqb\ngzzzTs3IdyCypU1LZy+rygtYN7+If/OJcgDWzC2Me/66eZEGTfVtPcxVR2ERERERmQYS2Q7nKeAt\nYJmZHTGzLwHfAq41s73AtcHvAM8DB4B9wP8B/guAuzcCXwfeCb6+FhwbUX1bz6DENaooN4NZ+Zns\nOX6mo+uhoDFTNAmpLM7l2bsv56n/fClLZ+fzjV9+GLcr8dHmTjLSUijJjf9YqysKcI8kJmrKFA7R\nGdc1FQXntc4zPTWF0rxMjrVE9l/dfKCBKxaXJq30+8GbV7BpSQl//uxOXtx1bMTz3z8aWc8aLUm/\n/8blbFgwk2uWz4p7fkFO+kBH63lxSttFRERERKaaRLoK3+7uZe6e7u5z3f377t7g7te4+5Lge2Nw\nrrv73e6+yN3XuPuWmOs86u6Lg68fJBpgQ1s3JflDb1GybE7+WTOuhxsiM67zY2aizIyNi4r5zn+4\nkPRU48U4nYZrmzspL8gasuzyyqWllORl8l8/tTTR0GWMZaWncvPaMr50xYLzvm9ZYTbHWrrYUdNM\nW/dpNi0ZfZnwudJSU/j27etZWTaDP3piGw/94n16Tg+95vX9o6dITTGWz4l8IFJRmM2P/3AjVSW5\nQ95n/fzIrKsaM4mIiIjIdJA20QEMx4Gmjt4hZ1whsj3IE5ur6et3UlOMQw0dzMrPJCdj8FMryEnn\nskUlPL/rGPffuPysGbba5s64jZmiPnvhXP7tugqtJwyZh+9YP6r7lRdk8dGJVt7YW0+KwWWLipMa\nV0FOOs/80Ua++fxufvCbQ7xzqJE1FYW0dZ+m53QfD9y0YqCcfVdtC4tL8wYakCXiwsoifrylRnu4\nioiIiMi0kOyuwkl1ui+yFnW4xHXZnHy6T/dzONga5HBDB1XFQ89U3bRmDjWNnbwfbD8SdbS5k/KC\n4ZMAJa1TR1lBZMb1X/eeZM3cQgpzhp7VH63MtFT+4pZVfPfz66lv7eGVD46zq7aF13bX8d3/t3/g\nvJfyysEAAAxZSURBVF1HT7Gq4vw6Gl+zYhY3rp7DxoXJTbhFRERERMIo3Ilrf6S8Mrar8LmWBetN\n9xyPlAtXN7Yzf5gmO9eunENqivFCzNrDntP91LV2x+0oLFNTeWEWHT19bK9pZtPH6CaciBtWl7H5\ngWvY8uC1/Oq+q/i99XP5p+21tHT0UhfsD7y6PH4H4aEU52Xync9fSPEwH+qIiIiIiEwV4U5cE5hx\nXTI7D7NI4trZ08eJU91UDZO4zszN4NKFM3lh5/GB7sLHW7pwj7+Hq0xN0b1c3eGKJK5vTcR/3FhJ\nV28/P9laMzDzv3qIrW9ERERERCTsievAjOvQiWtORhrzZ+bw0YnWgXLh+cOUCgPcuLqMA/XtfHQi\n0o04uhVOhWZcp42yYNujnIzUgUZH42VVeQEXVxXx+FvVvHck0lF4Zfn5lQqLiIiIiEwn4U5cozOu\n+cOXQy6dnc+eE60cCjoKDzfjCnDdqtmYwfM7j9HV28crH5wAUKnwNBJdz3zpwmIy0sb/r8EXNlZx\nuLGDH20+xIKSXPIyQ90nTURERERkQoX6f8un+5389BRyM4bvtrpsdj6v7a5jX11kBrVy5vAzrrPy\ns7i4aiZPvn2YJzZX09Dew6YlJdoTcxopzc/kgnmFfPbCuRPy+NevmsOs/EzqWru5VA2WRERERESG\nFe4Z1/5+SvIyz9q2Jp5lc/Lp63de/fAEhTnpFOSkj3jt311XQX1bN2vnFvD0XZfy+H+6hLTUUL8c\nkkSpKcazd1/OTWvKJuTxM9JSuGPDfEDrW0VERERERhLuGdc+H3Z9a9SyOZHOwttrmlmbYBLwuYvn\ncd3K2erKKhPm85dWsvlAA59aMXuiQxERERERCbVJkLiOvL/mgpJc0lON3j4fsTFTlJkpaZUJVZKX\nydN3bZzoMEREREREQi/UtbHRUuGRpKemsKg0Dxi5MZOIiIiIiIhMLiFPXBMrFYZIZ2GA+TOVuIqI\niIiIiEwloU5cgYRKheHMOteqksRKhUVERERERGRyCPUaVxh5D9eoa1fO5q39DawsmzHGEYmIiIiI\niMh4Cn/ieh6lwk/8wYYxjkZERERERETGW6hLhXMyUikryJroMERERERERGQChTpxXVSaR2WC29uI\niIiIiIjI1BTqxFVEREREREREiauIiIiIiIiEmhJXERERERERCTUlriIiIiIiIhJqSlxFREREREQk\n1JS4ioiIiIiISKgpcRUREREREZFQU+IqIiIiIiIioWbuPtExDMnMWoE9Ex1HjAKgZaKDGEKYY4sV\n5jhLgPqJDmIIYX3dwhoXhDs2jbXRCWtsYY0LNNZGS7GNTljHW5hfM8U2OmEdaxDe1y2scQGscvfs\nkU5KG49IPoY97n7RRAcRZWbfc/e7JjqOeMIcW6wwx2lmW8I03mKF9XULa1wQ+tg01kYhrLGFNS7Q\nWBstxTY6YR1vIX/NFNsohHWsQXhft7DGBWBmJxM5T6XC5+cXEx3AMMIcW6zJEmfYhPV1C2tcEO7Y\nwizMr1tYYwtrXGEX5tdNsU0tYX7NFNvUE9bXLaxxATQnclLYS4VD+2mKTD0abzJeNNZkvGisyXjS\neJPxorE2tST65xn2GdfvTXQAMq1ovMl40ViT8aKxJuNJ403Gi8ba1JLQn2eoZ1xFREREREREwj7j\nKiIiIiIiItOcElcREREREREJNSWuMmWZ2Twz+5WZfWhm75vZl4PjM83sFTPbG3wvCo4vN7O3zKzb\nzO6LuU6Wmf3WzN4NrvPQRD0nCadkjbWY66Wa2XYz++fxfi4Sbskca2Z2yMx2mtkOM9syEc9Hwi3J\n463QzH5qZruD622ciOck4ZTE/7MtC97Tol+nzOwrE/W8JLm0xlWmLDMrA8rcfZuZ5QNbgc8AXwQa\n3f1bZnY/UOTuf2pms4DK4Jwmd//b4DoG5Lp7m5mlA/8KfNndN0/A05IQStZYi7neHwMXATPc/dPj\n+Vwk3JI51szsEHCRu9eP9/OQySHJ4+0x4A13f8TMMoAcd09oCwyZ+pL972hwzVSgFtjg7tXj9Vxk\n7GjGVaYsdz/m7tuCn1uBD4EK4FbgseC0x4i86eHude7+DtB7znXc3duCX9ODL33iIwOSNdYAzGwu\ncDPwyDiELpNMMseayEiSNd7MbAZwJfD94LweJa0Sa4ze264B9itpnTqUuMq0YGZVwDrgbWC2ux+D\nyBslMCuB+6ea2Q6gDnjF3d8eu2hlMvu4Yw34n8B/B/rHKESZIpIw1hx42cy2mtldYxWnTA0fc7wt\nBE4CPwiWQTxiZrljGK5MYkl4b4v6HPBUsuOTiaPEVaY8M8sDfgZ8xd1PjeYa7t7n7hcAc4FLzGx1\nMmOUqeHjjjUz+zRQ5+5bkx6cTCnJeF8DLnf39cCNwN1mdmXSApQpJQnjLQ1YD3zH3dcB7cD9SQxR\npogkvbcRlKPfAvwkWbHJxFPiKlNasCb1Z8CT7v5/g8MngrUU0TUVdYleLyht+jVwQ5JDlUkuSWPt\ncuCWYO3h08DVZvbEGIUsk1Sy3tfc/WjwvQ74J+CSsYlYJrMkjbcjwJGYaqWfEklkRQYk+f9sNwLb\n3P1E8iOViaLEVaasoKnS94EP3f3vY256Drgz+PlO4OcjXKfUzAqDn7OBTwG7kx+xTFbJGmvu/mfu\nPtfdq4iUOL3m7p8fg5Blkkri+1pu0ACFoGTzOmBX8iOWySyJ723HgRozWxYcugb4IMnhyiSWrLEW\n43ZUJjzlqKuwTFlmdgXwBrCTM+sFHyCyZuIZYD5wGLjN3RvNbA6wBZgRnN8GrASqiDQESCXyYc8z\n7v618XsmEnbJGmuxZVFmdhVwn7oKS6wkvq+VEJllhUgZ5z+6+1+O1/OQySGZ721mdgGRpnMZwAHg\n9929aTyfj4RXksdaDlADLHT3lvF9JjKWlLiKiIiIiIhIqKlUWEREREREREJNiauIiIiIiIiEmhJX\nERERERERCTUlriIiIiIiIhJqSlxFREREREQk1JS4ioiIiIiISKgpcRURkWnBzPrMbIeZ7TKzX5hZ\nYXC8ysw6g9uiX18IbjtkZjvN7F0zeznYOxAzKzCzx81sf/D1uJkVxLneB8Ft6WZ2fcz128xsT/Dz\n42Z2lZm1nBPDp86J+/0gjj82syH//Y651vbgMV43s0H7AQfXeirm94djYo59PT5rZj80s4Mxx95M\n7p+OiIjI8NImOgAREZFx0unuFwCY2WPA3cBfBrftj94Wxyfdvd7M/gp4ALgX+D6wy92jCe5DwCPA\nbbHXM7NU4BXg37n7k8BLwfm/Bu5z9y3B71cBb7j7oATznLhnAf8IFABfHea5DlzLzC4AnjWzTnd/\nNTi2gsiH11eaWa67t7v73cFtVcA/x74eQeL7J+7+02EeU0REZMxoxlVERKajt4CK87zP68BiM1sM\nXAh8Pea2rwEXmdmi2Du4ex/w21E8VlzuXgfcBdxjZpbgfXYE8d0Tc/gO4EfAy8AtyYhNRERkLClx\nFRGRaSWYBb0GeC7m8KJzynQ3xbnrp4GdwEpgR5CUAgMJ6g5g1TmPlQVsAF5MILRN58SwKN5J7n6A\nyL/fsxK4ZtQ2YHnM7/8e+DHwFHB7gtf4m5jYnjyPxxYREfnYVCosIiLTRbaZ7QCqgK1ESnijhisV\n/pWZ9QHvAQ8CvwN4nPMs5vii4LGWAD919/cSiG+oUuF4EpptjXe+mV0MnHT3ajM7AjxqZkXu3jTC\nNVQqLCIiE0YzriIiMl1E14pWAhlE1rgm4pPufoG7f8Hdm4H3gXWxDZKCnz8BfBgciibCi4FLzSxp\n5bhmthDoA+rO427rYmK7HVhuZoeA/cAM4PeSFZ+IiMhYUOIqIiLTiru3EGmwdJ+ZpY/i/vuA7URm\nX6MeBLYFt8Weewy4H/iz0Ud8hpmVAt8Fvu3u8WZ9491nLfA/gIeDBPs2YK27V7l7FXAriZcLi4iI\nTAglriIiMu24+3bgXeBzwaFz17jeO8IlvgQsNbN9ZrYfWBoci+dZIGeIdbOxzl3j+tngeHZ0Oxzg\nX4g0VHoogWttN7M9wMPAvUFH4SuBWnevjTn3dWClmZWNcM2/OSe+jBHOFxERSRpL8ANbERERERER\nkQmhGVcREREREREJNXUVFhERmYTM7Hrgr885fNDdf3ci4hERERlLKhUWERERERGRUFOpsIiIiIiI\niISaElcREREREREJNSWuIiIiIiIiEmpKXEVERERERCTU/j+IXrNvImmO9gAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10be1db38>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "weekly_crimes.plot(figsize=(16,4), title='All Denver Crimes')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Aggregating weekly crime and traffic separately"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "crime_sort = pd.read_hdf('data/crime.h5', 'crime') \\\n",
    "               .set_index('REPORTED_DATE') \\\n",
    "               .sort_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012-03-31</th>\n",
       "      <td>7882</td>\n",
       "      <td>4726</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-30</th>\n",
       "      <td>9641</td>\n",
       "      <td>5255</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-09-30</th>\n",
       "      <td>10566</td>\n",
       "      <td>5003</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-12-31</th>\n",
       "      <td>9197</td>\n",
       "      <td>4802</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-03-31</th>\n",
       "      <td>8730</td>\n",
       "      <td>4442</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               IS_CRIME  IS_TRAFFIC\n",
       "REPORTED_DATE                      \n",
       "2012-03-31         7882        4726\n",
       "2012-06-30         9641        5255\n",
       "2012-09-30        10566        5003\n",
       "2012-12-31         9197        4802\n",
       "2013-03-31         8730        4442"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_quarterly = crime_sort.resample('Q')['IS_CRIME', 'IS_TRAFFIC'].sum()\n",
    "crime_quarterly.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012-01-01</th>\n",
       "      <td>7882</td>\n",
       "      <td>4726</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-04-01</th>\n",
       "      <td>9641</td>\n",
       "      <td>5255</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-07-01</th>\n",
       "      <td>10566</td>\n",
       "      <td>5003</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-10-01</th>\n",
       "      <td>9197</td>\n",
       "      <td>4802</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>8730</td>\n",
       "      <td>4442</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               IS_CRIME  IS_TRAFFIC\n",
       "REPORTED_DATE                      \n",
       "2012-01-01         7882        4726\n",
       "2012-04-01         9641        5255\n",
       "2012-07-01        10566        5003\n",
       "2012-10-01         9197        4802\n",
       "2013-01-01         8730        4442"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.resample('QS')['IS_CRIME', 'IS_TRAFFIC'].sum().head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "IS_CRIME      9641\n",
       "IS_TRAFFIC    5255\n",
       "dtype: int64"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.loc['2012-4-1':'2012-6-30', ['IS_CRIME', 'IS_TRAFFIC']].sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_quarterly2 = crime_sort.groupby(pd.Grouper(freq='Q'))['IS_CRIME', 'IS_TRAFFIC'].sum()\n",
    "crime_quarterly2.equals(crime_quarterly)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x10b8d12e8>"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nJLH8+fOzYMGCBWZW70p9U21Re/PNN7N27VqvY4iIiIiIiEgycM7lT0g/TT8WERERERGRVEtFrYiI\niIiIiKRaKmpFREREREQk1Uq159TGJyoqit27d3P69Gmvo6RpWbJkoVixYgQGBnodRURERERE0rk0\nVdTu3r2bnDlzcvPNN+Oc8zpOmmRmHDx4kN27d1OyZEmv44iIiIiISDp3xenHzrmJzrn9zrmf4rSF\nOOdWOed+dM6tdc7V9Lc759wo59w251ykc+7WOM8Jc85t9d/C4rRXc85t8D9nlLuGavT06dPky5dP\nBW0ycs6RL18+jYaLiIiIiEiKkJBzaicBF18baBjwqpmFAK/4HwPUB8r6b88A/wNwzuUF+gO3ATWB\n/s65PP7n/M/f9/zzrngdostRQZv8dIxFRERERCSluOL0YzNb6py7+eJm4Ab//VzAn/77jwAfmJkB\nq5xzuZ1zRYB7ga/M7BCAc+4roJ5z7hvgBjNb6W//AHgUmHcN70lERERERERSocOHDxMZGUlkZGSC\nn5PYc2q7Awucc2/gG+29099+I7ArTr/d/rbLte+Opz1ezrln8I3qUrx48URGFxERERERES9FR0ez\ndetWIiMjWb9+fWwhu2vXris/+SKJvaRPJ+DfZnYT8G/gXX97fPNSLRHt8TKz8WZW3cyqFyhQ4Coj\nXx85cuQAICYmhueee46goCAqV65MjRo1+O233y75vBMnTtChQwdKly5NpUqVqF27NqtXrwYgICCA\nkJAQgoKCaNSoEUeOHAFgx44dBAUFAfDNN9/gnOPdd9+N3ecPP/yAc4433ngDgNatW1OyZElCQkII\nCQnhzjvvRERERLxjZqxbt44ePXpQtmxZmjRpwh9//OF1LBGRJHXw4EEWL17MyJEjefrpp6levTo5\nc+akYsWKPPHEEwwfPpzff/+d2rVr8/rrrzN//nz+/PPPK+/YL7EjtWFAN//9GcAE//3dwE1x+hXD\nNzV5N74pyHHbv/G3F4unf6o3bdo0/vzzTyIjI8mQIQO7d+8me/bsl+zfrl07SpYsydatW8mQIQPb\nt29n06ZNAGTNmpUff/wRgLCwMMaOHUufPn3+sY/KlSszbdo02rZtC8BHH31ElSpVLugzfPhwmjZt\nmlRvU0RERBLhl19+ISIigoiICLZu3UpgYCD33nsv8+bNo2LFirzxxhu0a9dO61iISKoSHR3N5s2b\n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\nPOh1pHTp119/tV69elnBggUNsJtvvtmGDBlie/bs8TraNdm5c6e1b9/eAgICLFu2bNarVy99xlKB\nzZs320svvWRFixY1wPLnz2/du3e39evXex0tUYC1loDa0PPiNLG31FrU1qxZ06pUqXLBLTIy0utY\nVy01HGsRkYudO3fOIiIiYovY++67z9asWWNnz561jh07GmCNGjWyY8eOeR1VPLJjxw4bOnSoValS\nxQDLkCGD1alTxyZMmGCHDh3yOt4/nDp1yvr06WMZM2a0ggUL2owZMywmJsbrWGne2bNnbdasWfbA\nAw/Efk4eeeQRmzdvXpr7Ymzr1q321FNPmXPObrjhBhswYIAdPXrU61gSx7Fjx+zdd9+1u+66K/bz\n+NBDD9nHH39sZ86c8TreNVFRK8lKx1pEUpuFCxdatWrVDLDKlSvbF1988Y8//seMGWMBAQEWFBRk\nv/32mzdB5brbu3evjR492u68804DDLDbb7/dRo4cmWpG23744Qe79dZbDbDGjRvbn3/+6XWkNGnn\nzp3Wr18/K1KkiAFWrFgxGzBggO3atcvraMluw4YN1rhxYwMsX758NmzYMPv777+9jpVuxcTE2NKl\nS61169aWPXt2A6xcuXI2dOhQ++OPP7yOl2RU1Eqy0rEWkdRi/fr1Vq9ePQPspptusvfff/+yIylf\nfvml5c6d2woUKGDLli27jknlejp8+LBNnDjR6tataxkyZIj9suO1116z7du3ex0vUaKiomzYsGGW\nJUsWy5Url02YMEGjtkkgOjra5syZYw0bNrQMGTKYc84aNGhgs2fPtqioKK/jXXffffdd7O/UIkWK\n2JgxY+z06dNex0o3du3aZUOGDIk9LSJHjhzWrl07W7FiRZr8711FrSQrHWsRSel27NhhrVq1Muec\n5cmTx4YPH26nTp1K0HN/+eUXK1u2rAUGBtp7772XvEHluvn7779t2rRp9uijj1qmTJliz6fu06eP\n/fTTT17HSzJbtmyxe+65xwD717/+Zb/++qvXkVKlP/74wwYOHGg33XSTAVa4cGHr06ePZnH4LV26\n1GrXrm2AlShRwt599910WeRfD6dPn7bp06dbvXr1Yr+Eu+eee2zSpEkp4vz+5KSiVpKVjrWIpFQH\nDx60F154wTJnzmyZM2e2F198MVHnQh46dMjuv/9+A6xHjx5p7jy59OTs2bP26quvWo4cOWJHl7p3\n726rV69OkyMbZr7zx8PDwy1nzpyWNWtWe/PNN/UZToBz587Z/PnzrXHjxhYQEGCA1a1b12bOnGln\nz571Ol6KExMTYwsWLLAaNWoYYLfccotFRETYuXPnvI6WJnz//ffWtWtXy5s3b+x09759+9q2bdu8\njnbdqKiVZKVjLSIpzcmTJ+3111+33Llzm3POWrdubTt37rymfZ49e9Y6d+5sgDVs2FCLo6RCmzdv\ntpo1axpgTZs2tUWLFqWr4m7Xrl3WsGFDA6xmzZq2YcMGryOlSHv37rX//Oc/sYvIFShQwHr27Glb\nt271OlqqEBMTY59++qkFBQUZYMHBwTZ79uw0+6VRcjpw4ICNHDnSQkJCDLDMmTPb448/bgsWLEhX\nv7vOU1HrkezZs5uZ75u+rl27WqVKlSwoKMiqV69+yXN0zq+IfNNNN1n+/PljV0X+7bffrESJEhYU\nFGSVK1e22rVr244dOy547qxZswywTZs2xbb99ttvliVLlgtWWD5z5oy99957F+y/ZcuWZmYWFhZm\nM2bMMDPfH3C9evWyMmXKWKVKlaxGjRr2xRdf/CNzSjjWIiJmvvPd3nvvPStWrJgB1qBBgyRfVX7c\nuHEWEBBglSpV0lTOVCImJsbGjRtnWbNmtTx58ti0adO8juSZmJgYi4iIsPz581tgYKD1799f50Ca\n77gsWrTImjdvboGBgQbYvffeaxERETo+iXTu3DmbOnWqlS1bNvaLlK+++krF7RVER0fbF198Yc2a\nNYs9NeLWW2+1MWPGpPvLKKmo9cj5onbq1KnWpEmT2OkXu3btuuL0t/fee886d+58QVuJEiXsr7/+\nMjOzV155xdq1a3fB9mbNmlmtWrWsf//+sW2//fabVapUKUH7N7uwqO3Vq5e1atUq9pf53r174/1D\nICUcaxFJ32JiYuzzzz+PHRmoUaOGLV68ONle7+uvv7Y8efJY/vz5benSpcn2OnLt/vzzT6tfv74B\n9sADD9ju3bu9jpQi/PXXX9aiRQsDrGLFirZy5UqvI3niwIED9t///tduueUWAyxPnjz273//+4IB\nArk2UVFRNmHCBCtevHjs+Z/Lly/3OlaKs2XLFuvdu7fdeOONsatKd+vWzX788Uevo6UYCS1qM5JG\n7dmzh1OnTiXpPrNmzUqRIkUS/PpFihQhQ4YMABQrVuyaX/+OO+5g1KhRsY9PnDjBihUrWLx4MQ8/\n/DADBgy4pv2fPHmSd955h99++43MmTMDUKhQIZo3b35N+xURSWpr1qyhZ8+eLFmyhNKlSzNt2jSa\nNWuGcy7ZXrNOnTqsXr2aRo0aUadOHcLDw3n66aeT7fUkcT7++GM6dOjA33//zZgxY3j22WeT9XOR\nmuTPn5/JkycTGhpKx44dufPOO+nWrRuDBw8me/bsXsdLVmbGihUrCA8PZ+bMmZw5c4a77rqLvn37\n0rRpU7Jmzep1xDQlY8aMtG3blhYtWvDOO+8wePBgatWqRf369Rk8eDC33nqr1xE9c+LECWbMmMHE\niRNZvnw5GTJkoH79+owcOZJGjRqRKVMmryOmShm8DpBWNW/enDlz5hASEsILL7zADz/8cM37nD9/\nPo8++mjs408//ZR69epxyy23kDdvXr7//vvYbb/++ishISGEhITQuXPn2PZp06bFtr/33nsX7H/b\ntm0UL16cG2644Zqziogkh23bttG8eXNuu+02Nm7cyOjRo9m4cSPNmze/LoVL2bJlWbVqFffeey9t\n27blhRde4Ny5c8n+unJlR48eJSwsjKZNm1KyZEl++OEHOnfurII2Hg0aNOCnn36iU6dOvPXWWwQF\nBfH11197HStZHDlyhNGjRxMUFMTdd9/NnDlzaN++PRs2bGD58uW0bNlSBW0yypw5M126dGH79u28\n/vrrrF69mmrVqtG0aVM2btzodbzrxsxYvnw5Tz/9NIULF+bpp59m//79DB06lF27dvH555/TpEkT\nFbTXIiHDuSnxltKnH5v5lt/+4osvrEePHpYnTx77+uuvL/vcS00/DgoKsgIFClilSpXs+PHjsdsa\nNGhgX375pZmZjRw50nr06GFmiZ9+vH79egsJCUnQ+0wJx1pE0o99+/ZZ586dLWPGjJYtWzbr16+f\np4s2RUVFWdeuXQ2w+vXr25EjRzzLImZLliyxEiVKWIYMGaxfv35apfYqLF26NHYabps2bRK1UnhK\nExMTY6tWrbI2bdpY1qxZY09PePfdd9P85U9SuiNHjlj//v0tZ86c5pyzFi1apOmVfHfv3m2vvfZa\n7DnGOXLksLZt26bZa8omB9L79OOUIHPmzNSvX5/69etTqFAhPv30U+rUqXPV+1m8eDHZs2endevW\nvPLKK7z55pscPHiQRYsW8dNPP+Gc49y5czjnGDZsWKLzlilTht9//53jx4+TM2fORO9HRCSpnDhx\ngjfffJPhw4dz6tQp2rdvT//+/SlcuLCnuTJmzMioUaOoVKkSXbp04Y477mDOnDmULl3a01zpzZkz\nZ+jXrx9vvPEGpUuXZsWKFdx+++1ex0pV7r77btavX8/AgQMZNmwY8+bNY+zYsTz22GNeR0uQM2fO\nsHv3bnbu3Mnvv//Ojh07mD3O3f3IAAAgAElEQVR7Nj/++CM5cuSgVatWdOjQgapVq3odVYBcuXIx\nYMAAunbtyuuvv86YMWP46KOPePrpp+nXr1+SnK7nlaioKLZv386mTZvYtGkTS5cu5csvvyQmJoba\ntWvTp08fmjRpQo4cObyOmiapqE0m33//PYULF6Zo0aLExMQQGRlJcHBwoveXNWtW3nrrLSpXrkzf\nvn2ZOXMmrVq14u23347tc88997B8+XJuuummRL1GtmzZaNu2Lc899xxvv/02mTJlYs+ePSxcuJAW\nLVokOruIyNWKiopiwoQJvPrqq+zbt4/HHnuM1157jXLlynkd7QIdOnTglltuoUmTJtx22218/PHH\n3HPPPV7HShc2bNhAixYtiIyMpEOHDrzxxhv6YzGRsmTJwmuvvUazZs1o27YtTZo0oUmTJowZM8bz\nL5COHj3Kzp07Y4vWi+/v3bvXt/Kpn3OOkJAQwsPDefLJJ/UlfQqVL18+hg0bxr///W9ee+013n77\nbd5//306depE7969KViwoNcRL+nEiRNs3rw5tnj95Zdf2LRpE9u2bSMqKiq2X8mSJenduzetW7em\nTJkyHiZOH1TUJpP9+/fTvn17zpw5A0DNmjXp0qXLNe2zSJEihIaGMnbsWBYuXMhLL710wfYmTZow\ndepUevXqlejXGDx4MH379qVixYpkyZKF7NmzM3DgwGvKLSKSUGbGrFmzePnll9myZQu1atXik08+\n4Y477vA62iXdd999rFmzhkaNGnH//fczbtw42rdv73WsNCsmJoYRI0bw8ssvkydPHj7//HMeeugh\nr2OlCVWrVmX16tW8+eab9O/fn4ULF/Lmm2/SunXrZDk3OSYmhr179162aD127NgFz8mUKRPFixen\nRIkS1K9fP/Z+iRIlKF68OMWKFYtd7FJSviJFijB69Gh69OjBwIEDGT16NO+88w7dunWjR48e5MmT\nx5NcZsb+/ftjC9a4xeuuXbti+wUEBFCmTBkqVKjAI488QoUKFahQoQLlypXTGjXXmYv77VZqUr16\n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\n4Xz1q19l1apVua5e1rz55pt87Wtfo66ujltuuSXX1RERERERGbAUanth6dKlTJgwgcsuu4zjjjuO\nlStXMnXqVAoLC3NdtbwxfPhwbrrpJtasWcNll13Gww8/zNixYznzzDN54403cl29jOzYsYMvfvGL\nlJSU8NBDD1FaWprrKomIiIiIDFgKtT2wc+dOLrvsMo466ijef/99HnjgAR599FEOOOCAXFctbw0b\nNoxZs2axdu1apk+fzhNPPMFHP/pRTj/9dJYuXUpra2uuq9gj7s7555/Pn/70J+6//361DRERERGR\nPqbZj7vpt7/9Lf/6r//KunXr+MY3vsGPfvQjqqur++35B4sPPviA2bNnM3v2bLZv305lZSWHH344\nY8eObbeMGjUqlhNw3XDDDVxxxRXMmjWLK664ItfVERERERHJW7qlT5Zs3LiRadOmJWc3njNnDp/5\nzGf6/HkHu/r6eh544AGWL1/OihUrWLFiBRs3bkxur6qqYsyYMR3C7ogRI3IWdp999ln+6Z/+iS9+\n8YvMnz8/lqFbRERERCRfKNRmyN25/fbbufzyy9m1axfXXHMNV155JSUlJX32nLJ3H3zwQTLghsvK\nlSvZtGlTcp+hQ4emDbvDhw/v05D5zjvvMH78eGpqali0aBFVVVV99lwiIiIiIoOBQm0G3nzzTS66\n6CJeeOEFjjnmGObMmcOhhx7aJ88lmdu8eTMrV67sEHj/9re/Jfeprq7uEHTHjh3LsGHDMg67e/bs\n4bOf/SxvvfUWr7zyitqKiIiIiEgWKNT2QkNDA9dffz0//OEPKS8v54YbbuC8886joEDzaeWjTZs2\ndQi6K1asYMuWLcl99t1337Rht6amptvP8/Wvf525c+fyyCOPcNppp/XFSxERERERGXS6G2oT/VGZ\nfPDiiy8yZcoUVq1axVlnncXNN9/MsGHDcl0tyUBNTQ01NTUce+yxyTJ3Z+PGjR2C7n333Ud9fX1y\nv/322y9t2N1vv/3aPcd//ud/MnfuXP793/9dgVZEREREJAcGfU9tfX0906dP55e//CWjR4/m5z//\nOZMmTcpCDSWfuDsbNmxI27O7ffv25H41NTXJgDty5Ei++93vcuyxx/LEE0/oPsUiIiIiIlmk4cdd\ncHceeughLrnkEjZt2sS0adOYMWMGlZWVWayl5Dt357333ks7QdWOHTs46KCDWLx4Mfvuu2+uqyoi\n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\nqsjc+WwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11f40e7f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_kwargs = dict(figsize=(16,4), \n",
    "                   color=['black', 'lightgrey'], \n",
    "                   title='Denver Crimes and Traffic Accidents')\n",
    "crime_quarterly.plot(**plot_kwargs)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## How it works..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012-03-31</th>\n",
       "      <td>-1.313006e+06</td>\n",
       "      <td>496960.237747</td>\n",
       "      <td>7882</td>\n",
       "      <td>4726</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-30</th>\n",
       "      <td>-1.547274e+06</td>\n",
       "      <td>585656.789182</td>\n",
       "      <td>9641</td>\n",
       "      <td>5255</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-09-30</th>\n",
       "      <td>-1.615835e+06</td>\n",
       "      <td>611604.800384</td>\n",
       "      <td>10566</td>\n",
       "      <td>5003</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-12-31</th>\n",
       "      <td>-1.458177e+06</td>\n",
       "      <td>551923.040048</td>\n",
       "      <td>9197</td>\n",
       "      <td>4802</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-03-31</th>\n",
       "      <td>-1.368931e+06</td>\n",
       "      <td>518159.721947</td>\n",
       "      <td>8730</td>\n",
       "      <td>4442</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    GEO_LON        GEO_LAT  IS_CRIME  IS_TRAFFIC\n",
       "REPORTED_DATE                                                   \n",
       "2012-03-31    -1.313006e+06  496960.237747      7882        4726\n",
       "2012-06-30    -1.547274e+06  585656.789182      9641        5255\n",
       "2012-09-30    -1.615835e+06  611604.800384     10566        5003\n",
       "2012-12-31    -1.458177e+06  551923.040048      9197        4802\n",
       "2013-03-31    -1.368931e+06  518159.721947      8730        4442"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.resample('Q').sum().head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011-12-01</th>\n",
       "      <td>5013</td>\n",
       "      <td>3198</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-03-01</th>\n",
       "      <td>9260</td>\n",
       "      <td>4954</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-01</th>\n",
       "      <td>10524</td>\n",
       "      <td>5190</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-09-01</th>\n",
       "      <td>9450</td>\n",
       "      <td>4777</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-12-01</th>\n",
       "      <td>9003</td>\n",
       "      <td>4652</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               IS_CRIME  IS_TRAFFIC\n",
       "REPORTED_DATE                      \n",
       "2011-12-01         5013        3198\n",
       "2012-03-01         9260        4954\n",
       "2012-06-01        10524        5190\n",
       "2012-09-01         9450        4777\n",
       "2012-12-01         9003        4652"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.resample('QS-MAR')['IS_CRIME', 'IS_TRAFFIC'].sum().head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## There's more..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "IS_CRIME      7882\n",
       "IS_TRAFFIC    4726\n",
       "Name: 2012-03-31 00:00:00, dtype: int64"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_begin = crime_quarterly.iloc[0]\n",
    "crime_begin"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1158850b8>"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA6UAAAEXCAYAAABVvOIRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xtcjvf/B/DXp0g5T85ny7lUs5Ax\nzGERZoYcRzY5M2cb5jT8nMn5zBbJbKNRDkNjDBMjhxgqyllOoZPu9++P+65vESXVdVev5+NxP3Tf\n13V/rtd9deN+35/P9fkoEQERERERERGRFky0DkBEREREREQ5F4tSIiIiIiIi0gyLUiIiIiIiItIM\ni1IiIiIiIiLSDItSIiIiIiIi0gyLUiIiIiIiItIMi1IiIsoSlFLnlVJNtM6RXpRSfyql+mTSsfIq\npXyUUo+VUpsNj81USoUrpcKUUu8rpZ5mRpaUpJRFKTVNKbUhEyMREVEGY1FKRJQFKaVClFKRSqkI\npdQjpdTfSqn+Sqks8e+6UqqgUmqhUuq6UuqpUuqK4X7R1z1HRKxF5M9MjKkJpdQKwzl5qpSKUUrF\nJrq/K43NdgZQBICliHRVSlUCMBRANREpKyJBIpL/HTI3V0qJUmpEWtuI965ZUkspVVkpxcXaiYiM\nQJb48EJERMlqKyIFAFQAMBPAWABrtY2UlFIqVzKPmQHYD8AaQEsABQF8BCAcQN3UtJGdiUh/Eclv\nKMxmANgSf19EWr28fyrPTwUAl0TkRaL7d0XkfjrF7gXggeFPIiKit8KilIgoixORxyLyO/S9Yb2U\nUjYAoJTKo5Saa+iNvGPogbMwbGtiGLY5Uil1Vyl1SynV27DNUSl1WyllGn8MpVR7pVSA4WcTpdS3\nSqmrhuGfPyulihi2VTT0mH2tlLoO4EAykXsCKA+gvYhcEBGdiNwVkR9ExNfQTohSaqzhmM+UUrkM\njzU3bJ+slNqqlNpo6C0+q5SqqpT6zvB6QpVSnybKX0gptdbwOm8YhoCaGrZVVkodNAxtva+U2vK6\nc2045m3DvoeUUtaJtm1QSi01DJONUEodV0pZJdreQil10fDcJQDU2/yeE7VT2XCOexvO8V7D7+QX\nQ7ZHhqHBNQz7TwcwDkB3Q29rLwC7AJQ33F/zcq+hUsrS8HpuKaUeKqV+fUOe/AC+ADAAQE2llP1L\n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\nw6KUiIiIiIiINMOilIiIiIiIiDSj2TqlRYsWlYoVK2p1eCIiIiIiIspAJ0+evC8ixVLaT7OitGLF\nivD399fq8ERERERERJSBlFLXUrMfh+8SERERERGRZliUEhERERERkWZYlBIREREREZFmNLumNDmx\nsbEICwtDVFSU1lGyNXNzc5QtWxa5c+fWOgoREREREeVwRlWUhoWFoUCBAqhYsSKUUlrHyZZEBOHh\n4QgLC0OlSpW0jkNERERERDmcUQ3fjYqKgqWlJQvSDKSUgqWlJXujiYiIiIjIKBhVUQqABWkm4Dkm\nIiIiIiJjYVTDd4mIiIiIiChru3HjBo4dO5bq/VmUEhERERERUZpERkbi1KlTOHbsWMItLCzsrdow\nuuG7WsufPz8AQKfTYejQobCxsUGtWrVQp04dBAcHv/Z5T58+Rb9+/WBlZQVra2s0atQIx48fBwCY\nmprC3t4eNjY2aNu2LR49egQACAkJgY2NDQDgzz//hFIKa9euTWjz33//hVIKc+fOBQC4urqiUqVK\nsLe3h729PT766KMMOQdERET0dvz9/dGjRw9Ur14dR44c0ToOEVGGEBFcuXIFGzduxODBg+Hg4ICC\nBQuiYcOGGDVqFE6ePImPP/4Y7u7u7ClND1u2bMHNmzcREBAAExMThIWFIV++fK/dv0+fPqhUqRIu\nX74MExMTBAUFITAwEABgYWGB06dPAwB69eqFpUuXYvz48a+0UatWLWzZsgVff/01AMDLywt2dnZJ\n9pkzZw46duyYXi+TiIiI0ujFixfYtm0b3N3dceTIERQoUACFCxdG06ZNsXr1avTs2VPriERE7+Tx\n48f4559/EnpAjx8/jvDwcAD6zry6detizJgxqFevHurVq4cSJUqk6ThGW5QOGzYsoZBLL/b29li4\ncGGq9r116xZKlSoFExN9Z3LZsmVfu+/Vq1dx/PhxbNq0KWH/999/H++///4r+9avXx8BAQHJtlO+\nfHk8efIEd+7cQfHixbF79244OzunKi8RERFljocPH2L16tVYsmQJQkNDYWVlBXd3d7i6uuLFixfo\n1KkTevXqhcDAQEyfPj3hswERkTGLi4vD+fPnE4rPY8eOITAwECICpRRq1qyJdu3awdHREY6OjqhZ\nsyZMTU3T5dhGW5RqzcXFBQ0bNsRff/2FZs2aoUePHvjggw+S3ff8+fOwt7dP8ZcSFxeH/fv3J/SE\nJqdjx47YunUrPvjgA9SuXRt58uRJsn306NGYNm0aAMDa2hqbNm16y1dGREREaXHx4kUsWrQIP/74\nI54/f46mTZtiyZIlaN26dZLPALt378aQIUMwc+ZMXLx4ER4eHgmXBxERGYs7d+4kFJ/Hjh3DiRMn\n8PTpUwCApaUlHB0d0bVrVzg6OqJOnTooVKhQhmUx2qI0tT2aGaVs2bK4dOkSDhw4gAMHDqBZs2bY\nunUrmjVr9tZtRUZGwt7eHiEhIfjwww/RokWL1+7r4uKCzp074+LFi+jatSv+/vvvJNs5fJeIiCjz\niAj27t2LhQsXYvfu3ciTJw+6d++Ob775Bra2tsk+J3fu3Fi+fDmsra0xbNgwNGzYEL///jvKly+f\nyemJiPSio6Nx+vTpJJMRhYSEAABy5coFe3t7uLq6wtHREfXq1YOVlVWmLiNptEWpMciTJw9atWqF\nVq1aoUSJEti+fXuyRam1tTXOnDkDnU6X7BCd+GtKHz9+jDZt2mDp0qUYOnRosscsWbIkcufOjT/+\n+APu7u6vFKVERESU8Z49ewYPDw8sWrQIgYGBKFmyJH744Qf069cPxYoVS/H5SikMGTIEVapUQefO\nnVG3bl1s374djo6OmZCeMpKIQKfTpduwRaL0JiK4du1akgL033//RUxMDACgXLlycHR0xODBg+Ho\n6IjatWvDwsJC08wsSl/j1KlTKFmyJEqXLg2dToeAgIDXfiNqZWUFBwcHTJo0CVOnToVSCpcvX8aF\nCxfQrl27hP0KFSqERYsWoV27dhgwYMBrjz116lTcvXuX/9gRERFlstDQUCxduhSrVq3Cw4cP8eGH\nH8LDwwMuLi4wMzN76/ZatmyJo0ePom3btmjSpAnWrVuHbt26ZUByymjxveZjx47FmTNnULBgQVha\nWsLS0hJFihRJ8ufrHitUqBCvMaZ09/TpU5w4cSLJtaB37twBoO8cc3BwwDfffJPQC1qmTBmNE7+K\nRelr3L17F25uboiOjgYA1K1bF4MHD37t/mvWrMHIkSNRuXJl5M2bF5aWlpgzZ84r+33wwQews7OD\nl5cXPv7442TbetNSL4mvKQWAf/75J03/SRIREZGeiODYsWNYuHAhfv31V4gIvvjiCwwbNgwfffTR\nOw9hq1mzJo4fP46OHTuie/fuCAwMxJQpU1icZCGnTp3CmDFjsH//flSqVAnjx49HREQEwsPD8eDB\nA4SHhyMoKAjh4eF49OgRRCTZdkxMTPDee++9VSFbpEgR5M+fP1OHUpLx+/fff7Fy5UocPXoU586d\ng06nAwBUrVoVTk5OCZMR2djYIHfu3BqnTZl63V+ahB2UWgegDYC7ImKTzPbuAMYa7j4FMEBEzqR0\nYAcHB/H390/yWGBgIGrUqJHK6PQueK6JiCini4mJwS+//IKFCxfixIkTKFy4MNzc3DBo0CBUqFAh\nQ443cOBArF27Fh06dMCPP/74xuXmSHshISGYMGECNm3aBEtLS3z//ffo37//KxNRJhYXF4dHjx4h\nPDw8SdEa/+frfo6fYCY5uXPnTlXxGv9n8eLFUbJkyYw4JaSxgIAATJ48Gdu2bUP+/PnRoEGDhAK0\nbt26KFKkiNYRk1BKnRQRh5T2S01P6QYASwD89JrtwQAai8hDpVQrAKsA1EttUCIiIqLMdP/+faxc\nuRLLli3DzZs3Ua1aNSxbtgw9e/bM0CLRzMwMq1evhrW1NUaOHIng4GB4e3u/cdk50kZ4eDhmzJiB\nJUuWwMTEBN999x3Gjh2bqtlHTU1NEwrFtxETE/PGAjbxY0FBQThx4gTCw8MTRvW9rG3btli+fLlR\nDtWkt3fhwgVMnjwZW7duRcGCBTF58mQMGzYsQ2fEzUwpFqUickgpVfEN2xPPxHMMQLb+l7VevXqv\n/OX38PBArVq1NEpERJSziQg2bNgAMzMzdO/eXes4ZMTOnTsHd3d3bNy4EVFRUXBycsKaNWvg5OSU\naUNplVIYPnw4qlatii5duqBu3brw9vZGnTp1MuX49GaRkZFYvHgxZsyYgYiICLi6umLKlCmZ8sWB\nmZkZSpYs+VY9nCKCyMjIV4rW8+fPY9asWbC2tsb8+fPRu3dvDv/Noi5duoSpU6di8+bNyJcvHyZM\nmIARI0bgvffe0zpa+hKRFG8AKgI4l4r9RgFY84btfQH4A/AvX768vOzChQuvPEYZg+eaiLKDsLAw\n+fTTTwWAAJCVK1dqHYmMTFxcnOzYsUOaNWsmAMTCwkL69esn58+f1zqanD17VipWrCjm5uayZcsW\nrePkaC9evJANGzZIuXLlBIC0bt1azp49q3Wsd3L58mVp3LixAJAWLVpIcHCw1pHoLVy5ckV69eol\nJiYmkjdvXhk7dqzcu3dP61hvDYC/pKLeTLevBZVSnwD4Gv+7vjS5AniViDiIiENqplMnIiJ6HS8v\nL9SqVQuHDx/G0qVL4ezsjP79+2PTpk1aRyMjEBERgcWLF6NatWpo27YtLl26hJkzZyIsLAwrVqxA\nzZo1tY4IGxsbHD9+HB9++CE6d+6MKVOmvHaCHMoYIoLdu3ejdu3acHV1RYkSJeDn54edO3fCxuaV\nqVSylMqVK+PAgQNYtmwZjh49ChsbGyxZsiRhQhwyTiEhIejTpw+qVauGLVu2YNiwYQgODsbMmTNR\ntGhRreNlnNRUrkihpxSALYCrAKqmpj0RwYcffvhKJc3eu8zDc01EWVV4eLh07txZAIijo6P8999/\nIiLy/PlzadKkiZiamsq2bds0TklaCQoKkuHDh0vBggUFgNSvX1+2bNkiMTExWkd7raioKOnVq5cA\nkM6dO8vz58+1jpQjnDx5MqEHvVKlSuLl5SVxcXFax8oQISEh4uTkJACkYcOGcunSJa0j0UuuX78u\n/fr1k1y5comZmZkMHTpUbt68qXWsd4ZU9pS+c1EKoDyAKwA+Sk1b8TcWpdriuSairGj37t1SunRp\nyZUrl0yfPl1iY2OTbH/y5InUq1dPzMzMZO/evRqlpMym0+nkzz//lPbt24uJiYnkypVLunXrJseP\nH9c6WqrpdDqZNWuWKKWkTp06cuPGDa0jZVtBQUHSrVs3ASCWlpbi7u4u0dHRWsfKcDqdTjZs2CCF\nCxcWc3NzmT179iv/hlLmu3HjhgwePFjMzMwkd+7cMmDAAAkNDdU6VrpJt6IUwGYAtwDEAgiDfohu\nfwD9DdvXAHgI4LThlqoDsyjVFs81EWUlT58+lYEDBwoAqVmzppw6deq1+z548EBsbW3FwsJC/vrr\nr0xMSZktKipKNmzYIPb29gkFxrhx4yQsLEzraGm2fft2yZcvn5QpU0ZOnjypdZxs5f79+zJ8+HAx\nMzMTc3NzGTdunDx69EjrWJnu5s2b8vnnnwsAcXBwkICAAK0j5Ui3b9+WYcOGibm5ueTKlUvc3Nwk\nJCRE61jpLl17SjPiZqxFab58+UREPzHCkCFDxNraWmxsbMTBwUGCgoKSfU7dunXFzs5OypUrJ0WL\nFhU7Ozuxs7OT4OBgqVChgtjY2EitWrWkUaNGr7zZfvvtNwEggYGBCY8FBweLubl5Qjt2dnYSHR0t\n69evT9L+l19+KSIivXr1kq1bt4qISExMjIwdO1YqV64s1tbWUqdOHfH19X0lszGcayKi1Dh27JhU\nqVJFlFIyYsQIiYyMTPE5t2/flqpVq0rBggXF398/E1JSZrp165ZMmjRJihcvLgDE2tpaVq9enW2G\nvZ4+fVrKlSsnFhYW8ssvv2gdJ8t7/vy5zJw5UwoVKiQmJiby1VdfZaueqLTQ6XSyZcsWKVasmOTO\nnVsmT56cI3qLjcHdu3dl9OjRYmFhISYmJuLq6ipXr17VOlaGYVGaRvFFqaenp3To0CHh2oLQ0FB5\n8ODBG5+7fv16GTRoUJLHKlSokDBT1sSJE6VPnz5Jtnfq1EkaNmwokyZNSngsODhYrK2tU9W+SNKi\ndOzYsdKzZ0+JiooSEf0Hs+Rm9DOGc01E9CYxMTEyYcIEMTExkfLly4ufn99bPf/69etSoUIFsbS0\nlHPnzmVMSMpUZ86ckV69eomZmZkAkDZt2sgff/whOp1O62jp7tatW+Lo6CgAZNq0adnyNWa0Fy9e\nyPr166Vs2bLZZkbd9Hbv3r2Eocy1atWSEydOaB0p2woPD5dx48ZJvnz5RCklPXr0SJgTITtLbVGa\n4jqlWrl16xYiIyPTtU0LCwuUKlUq1ccvVapUwrpl6bE+Vf369bFo0aKE+0+fPsWRI0fg5+eHzz77\nDJMnT36n9p8/f47Vq1cjODgYefLkAQCUKFECLi4u79QuEVFmu3DhAr788kucOnUKrq6uWLhw4Vsv\nEF6uXDns27cPH3/8MVq0aIG//voLVlZWGZSYMtrGjRvRu3dv5MmTB3379sWQIUNQtWpVrWNlmJIl\nS8LPzw99+vTBhAkTcOHCBaxduxbm5uZaRzN6IoI9e/ZgzJgxOHv2LOrUqQMPDw80adJE62hGp2jR\noti0aRO6dOmC/v37o169ehg9ejQmTZoECwsLreNlC48ePcKCBQuwYMECPH36FC4uLpg0aRJq1Kih\ndTSjkjkrRWdBLi4u2LFjB+zt7TFy5Ej8+++/79zm7t278fnnnyfc3759O1q2bImqVauiSJEiOHXq\nVMK2q1evwt7eHvb29hg0aFDC41u2bEl4fP369Unav3LlCsqXL4+CBQu+c1YiIi3odDosXLgQtWvX\nxvXr1/Hbb79h/fr1b12QxqtcuTL27duHmJgYNGvWDKGhoemcmDLD/Pnz8eWXX6JRo0a4fv06Fi9e\nnK0L0njm5ubw8PDA9OnT4enpiSZNmuD27dtaxzJqJ0+eRPPmzdGqVSs8e/YMW7ZswfHjx1mQpqBt\n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\nRERERERGIVVFqVKqpVLqklLqilLq2zfs11EpJUqpFGdYIsppJkyYgPv372P58uUwMeH3QURERERE\nQCqKUqWUKYClAFoBqAmgq1KqZjL7FQAwFMDx9A5JlNX5+/tj2bJlGDRoEGrXrq11HCIiIiIio5Ga\n7pq6AK6ISJCIxADwAtVHkBoAACAASURBVNAumf1+ADAbQFQ65iPK8uLi4jBgwACUKFECP/zwg9Zx\niIiIiIiMSmqK0jIAQhPdDzM8lkAp9QGAciKy800NKaX6KqX8lVL+9+7de+uwRFnRypUr4e/vj/nz\n56NQoUJaxyEiIiIiMiqpKUpVMo9JwkalTAAsADAypYZEZJWIOIiIQ7FixVKfkiiLunPnDsaNG4dm\nzZqhS5cuWschIiIiIjI6/9/enUe3Wd/5Hn//JG+ybFmxCZSZQFkawjJNodAkw1xa2tJSKIVmKEt7\nKNCWhj3hMEk7LC03AVo6lBI3BGgOLXvLbSGXsk1hpsBMb1kTlgaatECBsARIvMq2bFnS9/5hPRrZ\ncRw5lv1o+bzO0ZH06PGjr+Sf5eer72/JJyl9G9gt5/4M4N2c+43APwCPO+feAOYB92myIxFYvHgx\n8XiclStX4txo3++IiIiIiFS2fJLSZ4GZzrk9nXM1wMnAfd6DZtZlZjuZ2R5mtgfwFHCsma2ZlIhF\nSsTjjz/OHXfcwXe+8x1mzZrldzgiIiIiIkVpu0mpmSWB84CHgfXAr83sZefcMufcsZMdoEgpSiQS\nnHPOOey5555cfPHFfocjIiIiIlK0qvLZycweAh4ase3729j38ImHJVLarrnmGtavX8+DDz5IKBTy\nOxwRERERkaKVT/ddERmHN954g8svv5z58+dz9NFH+x2OiIiIiEhRU1IqUmALFy4kEAjQ2trqdygi\nIiIiIkVPSWkJ6urq4tprr+XrX/86zz//vN/hSI777ruP+++/n8suu4zddttt+z8gIiIiIlLhnJlt\nf69JcMghh9iaNZqgdzxeeeUVVqxYwc0330xPTw/19fX09/ezcOFCli1bRmNjo98hVrTe3l72339/\nGhsbef7556murvY7JBERERER3zjn1prZdpcKVaW0yJkZv//97zn22GOZNWsWN954I/Pnz2fNmjW8\n8847nHnmmbS2trLffvuxevVq/PqSQeCKK65g48aN3HDDDUpIRURERETypKS0SMXjcX7+858ze/Zs\njjjiCJ566im+973v8eabb3Lbbbdx8MEHE41Guf7663nyySeZPn06xx9/PF/60pd4/fXX/Q6/4vz5\nz3/mxz/+MaeffjqHHXaY3+GIiIiIiJQMJaVF5t133+XSSy9lt91244wzziAYDHLzzTezceNGli5d\nyq677rrVz8ydO5dnn32Wn/zkJzz++OMccMABXHXVVSQSCR9eQeUxM8455xwaGxv5t3/7N7/DERER\nkQqWSqWIxWL09PQQj8dJJBKkUin1ppOipjGlReLZZ59l+fLl/PrXvyaVSnHcccexaNEiPvWpT+Gc\ny/s4b731FhdccAGrV6/mgAMO4IYbblDlbpLdfvvtnHrqqfzsZz9jwYIFfocjIiIiFSSVStHX10dv\nby89PT309/ePup9zjmAwuNWlqqpqzG2BgGpYsuPyHVOqpNRHyWSS1atX09rayhNPPEFjYyPf+ta3\nOP/889lrr70mdOwHHniA8847jzfffJNvfvOb/OhHP2KnnXYqUOTi6ejoYN9992XPPffkiSee0Ae3\niIiITKp0Ok1fXx89PT309vYSj8eBoaQzFAoRDocJh8M450ilUiSTSVKp1LDLyG1j5QPOue0mrqNt\nG09RRcZncHCQ9vZ2uru7cc7hnCMQCBAIBEa9PfI63/0K8TvMNymtmvAzybi1t7dz0003cd111/HW\nW2+x995709rayumnn04kEinIcxxzzDF8+tOf5vLLL+eaa67ht7/9LVdffTWnn366PiQK6JJLLmHL\nli387ne/U0IqIiJFxcxIp9NbJSQ1NTWEQiG/w5M8eUlob29vNgn1kshQKMT06dMJh8PU19fv0LmI\nmWFmeSWvqVSKgYGB7PaxBAKBMZPX6upqGhoadP40Dn19fbS1tdHV1QVAOBwmEAiQTqcxMwYHB7N/\n9962dDq9w8+Xm/COlcSOtS3v51KldOqsX7+en/70p9x6663E43E+85nPcMEFF3D00UcTDAYn7Xlf\neuklzjrrLP74xz9y2GGHccMNN3DAAQdM2vNVimeffZa5c+dy/vnn09ra6nc4IiJSxnKTy3yTh7Eq\nYHV1dTQ3N9PU1DSp5yAyful0mng8nk1C+/r6hiWhXiW0vr7e19/dyC89xtMuPcFgkGnTpjFt2jRq\na2t9ey3FzMzo7u5my5YtxONxAoEA06ZNo6WlhZqamryPMTJRnaxtIz9zPvrRj6r7bjFIp9M88sgj\ntLa28rvf/Y7a2lpOOeUUFi5cyOzZs6c0jltuuYUlS5bQ3d3NkiVLuPTSS6mvr5+yGMpJKpVi7ty5\nvPvuu2zYsKFgFW4RESlvo1Uu8zmp3173yny6U3qX3t5e2tvbGRgYIBAI0NTURHNzs6qnPjGzbBLa\n09MzLAmtq6vLJqHhcLgsvkAwM1KpFPF4nPb2dmKxGDBU9WtubqaxsVHVU4aG+XV0dNDW1kYymaSm\npoaWlhai0WhRtwOv8u4lqDU1NUpK/dTb28vtt99Oa2srGzZsYNddd+Wcc87hzDPPZPr06b7FtWXL\nFpYsWcItt9zCHnvswcqVKzn66KN9i6dUrVy5kvPOO49f/epXnHzyyX6HIyIiPkqn0yQSiexlrERz\ne13pdmTs3o522fSSgq6uLsxM1dMpYmb09/cPS0K9dlFbW0s4HKahoYH6+nqqqsp/pN3g4CAdHR10\ndHQwODhY8dXT/v5+2tra6OzsxMwIh8O0tLTQ2NhYkkPwNNGRTzZu3MjKlStZtWoVnZ2dHHLIIVxw\nwQWccMIJeZfYp8J//dd/cfbZZ7N+/XqOP/54li9fzowZM/wOqyS89957zJo1izlz5vDII4+U5AeE\niIiMj5llk86BgYFh14ODg1vtP56kMje59ON/SiqVorOzU9XTSWJmDAwMZCcm6u3tzSahNTU1NDQ0\nZCuhlZCEbouZ0dPTU5HVU++1t7W10dPTg3OOaDRKS0sLdXV1foc3IUpKp5CZ8eSTT7J8+XJWr16N\nmXH88cezaNEiDj300KJNWhKJBNdccw3Lli2jqqqKK664gnPPPbeiPxDzccopp/Cb3/yGdevWsc8+\n+/gdjoiIFIg3UYiXbOYmniPX/g4EAtTW1lJTU0NNTc2w26U686iqp4XhJaFeAtrb25sdR+lN7uMl\nodXV1T5HW5wqpXqaTqezXXQTiQRVVVU0NzfT3NxcNufjSkqnQCKR4De/+Q3Lly9nzZo1RKNRFixY\nwLnnnsvuu+/ud3h5+9vf/sZ5553Hv//7v3PQQQdx4403MmfOHL/DKkqPPvoon/3sZ/ne977HsmXL\n/A5HRETGyZtldGS107vknhcFAoGtkk7vulQTz3x51dOOjg76+/uHVU/r6urK+rWPl1dFz01Ck8kk\nMJSE5o4JLaZec6XAqyB2dHTQ3d0NlEf1NJFI0N7eTnt7O+l0mlAoREtLC5FIpGRf07YoKZ1Emzdv\n5mc/+xnXX389mzZtYtasWSxatIhTTz2VcDjsd3g7xMy45557WLRoEZs2beLss8/myiuvJBqN+h1a\n0UgkEsyePZvBwUFeeukldWkSESlSXuK5re62uec+zrmtKp3e7aqqqopPvlQ9HZ2XhHpdcr0ktKqq\nKpuANjQ0UF1dXfFtqFBKvXpqZtklXbwEOxKJ0NLSQn19fdm2EyWlk2DdunW0trZyxx13MDAwwJFH\nHskFF1zA5z//+bL5VqO7u5vvf//7rFixgp133plrr72Wk046qWz/UMbjBz/4AZdccgkPPfQQRx11\nlN/hiIhUPC/xHK277cgJhbaVeCppyF+lVk+9JVri8Th9fX309fVlk9BgMJhNQL1KaLm+D8Wi1Kqn\n6XSa7u5u2trasku6eF10K6FyrqS0QNLpNA8++CDLly/n0UcfJRQKcdppp7Fw4UL2228/v8ObNGvX\nruWss85izZo1fO5zn2PlypXMnDnT77B88/rrr7P//vtz9NFHc8899/gdjohIxRkYGKC7u5v+/v5h\ns9zmqq6u3qqbrXdRolA45Vw99bri5iag/f392cerq6upr6+nvr6ecDhMbW2t2paPirl6mkwms110\nc5d0mTZtWtElzpNJSekExWIxbr75ZlasWMGrr77KjBkzOP/88znjjDNobm72O7wpkUqluPHGG7n4\n4osZGBjg4osv5rvf/a7vf+RTzcw49thjeeyxx1i/fj277bab3yGJSInx1m2rpBORifImi+nu7qar\nq4uBgQFgKCkYrepZXV2t99cH26qeTps2jVAoVPQJm7deppeAxuPx7JcdgUCAUChEfX199rpcJp8p\nN8VUPe3v72fLli3ZL2waGhpoaWmhoaGh6P8eJkNBk1Ln3BeAViAI3GRmV414/ELgDCAJbAa+aWZv\njnXMYk5KH3/8cU488UQ2b97MoYceyqJFi5g/f37FzpC2adMmLrzwQu666y722WcfbrjhBj7zmc/4\nHdaU+e1vf8uXv/xlrr76ahYvXux3OCJSAF6S6C3w7S3yPdr1tm6PZz/vf21dXR0NDQ00NjaW9Rii\nHeWt39jd3U13d3c2Ea2vr6epqYnGxsaK6O5Wikqheup90ZGbgHptDIbWCPWSz/r6elVBS5Qf1VMz\nIxaL0dbWRm9vL845pk2blu3aXskKlpQ654LAX4HPAW8DzwJfNbM/5+zzaeBpM+tzzp0NHG5mJ411\n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\nLNz2lklwzv0j8L/N7MjM/YsAzOyHOfs8nNnnSedcFfAeMN3GOPhee+1l9913H2ZGNBpVVbQCpFIp\nent7s0lqMpkEoK6ujsbGRhobGwmFQmoDk2Rb40Sj0ajGiYqIiIhIwTnn1prZIdvbL59y5N8Db+Xc\nfxuYu619zCzpnOsCWoAtI4JaACwA+MhHPkIwGGTmzJmqilaIYDBIJBIhEolgZvT39xOLxejp6WHz\n5s1s3ryZYDCYraA2NjaqYjdBo40Traqq0jhRERERESka+WSDo52xjqyA5rMPZrYKWAXw8Y9/3Pbb\nb788nl7KkXOOUChEKBRi5513JplM0tPTk62idnZ2AlBfX5+totbW1iqBytPAwEA2EdU4UREREREp\nZvkkpW8Du+XcnwG8u4193s50320C2sc6aCAQGEeYUu6qqqqIRqNEo9Fsdc9LUN9//33ef/99qqqq\nsglqOBxWFXWEZDKZnbAoHo8DGicqIiIiIsUvn6T0WWCmc25P4B3gZOBrI/a5DzgNeBL4CvDoWONJ\nRcbinKO+vp76+np22WUXBgcHs918u7q66OjowDlHOBzOdvMdbVbgSjDWeqLRaFSTSImIiIhI0dtu\nUpoZI3oe8DBDS8L8wsxeds4tA9aY2X3Az4HbnXOvMlQhPXkyg5bKUl1dTXNzM83NzaTTafr6+rJJ\n6nvvvcd7771HTU1NtopaX19f1pV4jRMVERERkXKy3dl3J8shhxxia9as8eW5pXzkLjnT29uLmREI\nBAiHw9kktVyqhRonKiIiIiKlpJCz74oUrZqaGlpaWmhpaSGdTg9bciYWiwFDS8543XyLedkhMyOd\nTmevvdt9fX0aJyoiIiIiZUtJqZSNQCCQrY6aGQMDA9luvlu2bGHLli0Eg0EaGhqySepYyxGZ2VaJ\n4siEsZDbxqJxoiIiIiJSrpSUSllyzlFXV0ddXR3Tp08nlUpll5zxJkwCsuMvt5UwTuT5A4FA9jr3\ndlVV1VbbRtvPu66pqdFyOCIiIiJStpSUSkUIBoM0NTXR1NSEmdHf358dh+qcyys5zHebdzwRERER\nEdk+JaVScZxzhEIhQqGQ36GIiIiIiFS88l03Q0RERERERIqeklIRERERERHxjZJSERERERER8Y2S\nUhEREREREfGNklIRERERERHxjZJSERERERER8Y2SUhEREREREfGNklIRERERERHxjTMzf57YuTjw\nsi9Pnr8moMvvIMZQ7PFBacS4O7DR7yDGUArvYbHHWOzxgdphISjGiSv2dgjF/x4We3xQGjEWe1ss\nhfew2GMs9vhA7bAQZppZ0/Z28jMp3Wxm03158jw551aZ2QK/49iWYo8PSibGom6LJfIeFnWMxR4f\nqB0WgmKcuGJvpXgfcgAACIVJREFUh1AS72FRxwclE2NRt8USeQ+LOsZijw/UDgsh3xj97L7b6eNz\n5+t+vwPYjmKPD0ojxmJvi6XwHhZ7jMUeH6gdFoJinLhib4dQ/O9hsccHpRFjsbfFUngPiz3GYo8P\n1A4LIa8Y/ayUrjGzQ3x5cpEcaotSDNQOpRioHUqxUFuUYqB2OHX8rJSu8vG5RXKpLUoxUDuUYqB2\nKMVCbVGKgdrhFPGtUioiIiIiIiKiJWFERERERETEN0pKRURERERExDcFS0qdc7s55x5zzq13zr3s\nnFuU2d7snPsP59wrmetpme37OueedM4NOOcWb+84IvkqYFusc84945x7MXOcpX69Jik9hWqHOccL\nOueed849MNWvRUpXIduhc+4N59w659wLzrk1frweKV0FbotR59zdzrkNmeP9ox+vSUpPAc8RZ2U+\nC71Lt3PuAr9eVzko2JhS59yuwK5m9pxzrhFYC3wZOB1oN7OrnHP/Ckwzs+8653YGPpzZp8PMfjzW\ncczszwUJVMpeAduiA8Jm1uOcqwb+H7DIzJ7y4WVJiSlUO8w53oXAIUDEzI6ZytcipauQ7dA59wZw\niJltmerXIaWvwG3xVuAPZnaTc64GqDezYl+6Q4pAof83Z44ZBN4B5prZm1P1WspNwSqlZrbJzJ7L\n3I4B64G/B44Dbs3sditDv1TM7AMzexYYzPM4InkpYFs0M+vJ3K3OXDQzmOSlUO0QwDk3A/gicNMU\nhC5lpJDtUGQiCtUWnXMR4JPAzzP7JZSQSr4m6TPxs8BrSkgnZlLGlDrn9gAOAp4GdjGzTTDUEICd\nd/A4IuM20baY6TL5AvAB8B9mprYo41aAz8TlwHeA9CSFKBWgAO3QgEecc2udcwsmK04pfxNsi3sB\nm4GbM0MabnLOhScxXClThcpXgJOBXxU6vkpT8KTUOdcA3ANcYGbdfh9HKlch2pCZpczsQGAGMMc5\n9w+FjFHK30TboXPuGOADM1tb8OCkYhTof+o/mdnHgaOAc51znyxYgFIxCtAWq4CPAzeY2UFAL/Cv\nBQxRKkAB85Ua4FjgN4WKrVIVNCnNjLu7B7jTzFZnNr+f6b/t9eP+YAePI5K3QrVFT6Zr0OPAFwoc\nqpSxArXDfwKOzYznuwv4jHPujkkKWcpQoT4PzezdzPUHwP8F5kxOxFKuCtQW3wbezum5dDdDSapI\nXgp8jngU8JyZvV/4SCtLIWffdQz1719vZj/Jeeg+4LTM7dOA3+7gcUTyUsC2ON05F83cDgFHABsK\nH7GUo0K1QzO7yMxmmNkeDHURetTMTpmEkKUMFfDzMJyZFIRMV8nPAy8VPmIpVwX8THwPeMs5Nyuz\n6bOAJsOUvBSqHeb4Kuq6WxCFnH33fwF/ANbxP+OeLmaon/avgd2BjcAJZtbunPsQsAaIZPbvAfYH\nZo92HDN7qCCBStkrYFvcg6HB7kGGvsD5tZktm7pXIqWsUO0wt1uRc+5wYLFm35V8FfDzcCeGqqMw\n1H3yl2Z25VS9Dil9hfxMdM4dyNDEbzXA34BvmFnHVL4eKU0Fbof1wFvAXmbWNbWvpPwULCkVERER\nERERGa9JmX1XREREREREJB9KSkVERERERMQ3SkpFRERERETEN0pKRURERERExDdKSkVERERERMQ3\nSkpFRERERETEN0pKRUSk5DnnUs65F5xzLznn7nfORTPb93DOxTOPeZdTM4+94Zxb55x70Tn3SGY9\nOpxzTc6525xzr2UutznnmkY53p8zj1U7547MOX6Pc+4vmdu3OecOd851jYjhiBFxv5yJ40Ln3Db/\nN+cc6/nMc/y3c26rdWszx/pVzv2VOTHnvh9fcc7d4px7PWfbE4X97YiIiIytyu8ARERECiBuZgcC\nOOduBc4Frsw89pr32Cg+bWZbnHM/YGgB9YXAz4GXzMxLXpcCNwEn5B7PORcE/gM40czuBB7O7P84\nsNjM1mTuHw78wcy2Sh5HxL0z8EugCbhsjNeaPZZz7kDgXudc3Mx+n9m2H0NfOn/SORc2s14zOzfz\n2B7AA7nvRyapXWJmd4/xnCIiIpNGlVIRESk3TwJ/P86f+W/gI865jwAHA5fnPLYMOMQ5t3fuD5hZ\nCnhmB55rVGb2AbAAOM855/L8mRcy8Z2Xs/lrwO3AI8CxhYhNRERkMikpFRGRspGpXn4WuC9n894j\nus4eNsqPHgOsA/YHXsgknEA2+XwBOGDEc9UBc4Hf5RHaYSNi2Hu0nczsbwz9b945j2N6ngP2zbl/\nEvB/gF8BX83zGFfnxHbnOJ5bRERkwtR9V0REykHIOfcCsAewlqFutZ6xuu8+5pxLAX8CLgU+Bdgo\n+7mc7XtnnmsmcLeZ/SmP+LbVfXc0eVVJR9vfOfcJYLOZvemcexv4hXNumpl1bOcY6r4rIiK+UaVU\nRETKgTc288NADUNjSvPxaTM70MxONbNO4GXgoNzJhjK3Pwasz2zyktyPAPOccwXrIuuc2wtIAR+M\n48cOyontq8C+zrk3gNeACHB8oeITERGZDEpKRUSkbJhZF0OTFS12zlXvwM+/CjzPUNXUcynwXOax\n3H03Af8KXLTjEf8P59x04EbgOjMbrVo72s/MBr4HrMwkzycAs81sDzPbAziO/LvwioiI+EJJqYiI\nlBUzex54ETg5s2nkmNKF2znEt4B9nHOvOudeA/bJbBvNvUD9Nsap5ho5pvQrme0hb0kY4D8Zmpxo\naR7Het459xdgJbAwM/PuJ4F3zOydnH3/G9jfObfrdo559Yj4arazv4iISMG4PL+MFRERERERESk4\nVUpFRERERETEN5p9V0REpMg4544EfjRi8+tmNt+PeERERCaTuu+KiIiIiIiIb9R9V0RERERERHyj\npFRERERERER8o6RUREREREREfKOkVERERERERHzz/wEgbUDS3S1bvAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10be1d5f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "crime_quarterly.div(crime_begin) \\\n",
    "               .sub(1) \\\n",
    "               .round(2) \\\n",
    "               .plot(**plot_kwargs)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Measuring crime by weekday and year"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>OFFENSE_TYPE_ID</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th>GEO_LON</th>\n",
       "      <th>GEO_LAT</th>\n",
       "      <th>NEIGHBORHOOD_ID</th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>traffic-accident-dui-duid</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>2014-06-29 02:01:00</td>\n",
       "      <td>-105.000149</td>\n",
       "      <td>39.745753</td>\n",
       "      <td>cbd</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>vehicular-eluding-no-chase</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>2014-06-29 01:54:00</td>\n",
       "      <td>-104.884660</td>\n",
       "      <td>39.738702</td>\n",
       "      <td>east-colfax</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>disturbing-the-peace</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>2014-06-29 02:00:00</td>\n",
       "      <td>-105.020719</td>\n",
       "      <td>39.706674</td>\n",
       "      <td>athmar-park</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>curfew</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>2014-06-29 02:18:00</td>\n",
       "      <td>-105.001552</td>\n",
       "      <td>39.769505</td>\n",
       "      <td>sunnyside</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>2014-06-29 04:17:00</td>\n",
       "      <td>-105.018557</td>\n",
       "      <td>39.679229</td>\n",
       "      <td>college-view-south-platte</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              OFFENSE_TYPE_ID OFFENSE_CATEGORY_ID       REPORTED_DATE  \\\n",
       "0   traffic-accident-dui-duid    traffic-accident 2014-06-29 02:01:00   \n",
       "1  vehicular-eluding-no-chase    all-other-crimes 2014-06-29 01:54:00   \n",
       "2        disturbing-the-peace     public-disorder 2014-06-29 02:00:00   \n",
       "3                      curfew     public-disorder 2014-06-29 02:18:00   \n",
       "4          aggravated-assault  aggravated-assault 2014-06-29 04:17:00   \n",
       "\n",
       "      GEO_LON    GEO_LAT            NEIGHBORHOOD_ID  IS_CRIME  IS_TRAFFIC  \n",
       "0 -105.000149  39.745753                        cbd         0           1  \n",
       "1 -104.884660  39.738702                east-colfax         1           0  \n",
       "2 -105.020719  39.706674                athmar-park         1           0  \n",
       "3 -105.001552  39.769505                  sunnyside         1           0  \n",
       "4 -105.018557  39.679229  college-view-south-platte         1           0  "
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime = pd.read_hdf('data/crime.h5', 'crime')\n",
    "crime.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Monday       70024\n",
       "Friday       69621\n",
       "Wednesday    69538\n",
       "Thursday     69287\n",
       "Tuesday      68394\n",
       "Saturday     58834\n",
       "Sunday       55213\n",
       "Name: REPORTED_DATE, dtype: int64"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wd_counts = crime['REPORTED_DATE'].dt.weekday_name.value_counts()\n",
    "wd_counts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x117e39e48>"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n7OmLn6kAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11a8866a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', \n",
    "        'Friday', 'Saturday', 'Sunday']\n",
    "title = 'Denver Crimes and Traffic Accidents per Weekday'\n",
    "wd_counts.reindex(days).plot(kind='barh', title=title)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x11b1c6d68>"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11a5b4470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "title = 'Denver Crimes and Traffic Accidents per Year' \n",
    "crime['REPORTED_DATE'].dt.year.value_counts() \\\n",
    "                              .sort_index() \\\n",
    "                              .plot(kind='barh', title=title)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "REPORTED_DATE  REPORTED_DATE\n",
       "2012           Friday            8549\n",
       "               Monday            8786\n",
       "               Saturday          7442\n",
       "               Sunday            7189\n",
       "               Thursday          8440\n",
       "               Tuesday           8191\n",
       "               Wednesday         8440\n",
       "2013           Friday           10380\n",
       "               Monday           10627\n",
       "               Saturday          8875\n",
       "dtype: int64"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "weekday = crime['REPORTED_DATE'].dt.weekday_name\n",
    "year = crime['REPORTED_DATE'].dt.year\n",
    "\n",
    "crime_wd_y = crime.groupby([year, weekday]).size()\n",
    "crime_wd_y.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Weekday</th>\n",
       "      <th>Friday</th>\n",
       "      <th>Monday</th>\n",
       "      <th>Saturday</th>\n",
       "      <th>Sunday</th>\n",
       "      <th>Thursday</th>\n",
       "      <th>Tuesday</th>\n",
       "      <th>Wednesday</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Year</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012</th>\n",
       "      <td>8549</td>\n",
       "      <td>8786</td>\n",
       "      <td>7442</td>\n",
       "      <td>7189</td>\n",
       "      <td>8440</td>\n",
       "      <td>8191</td>\n",
       "      <td>8440</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013</th>\n",
       "      <td>10380</td>\n",
       "      <td>10627</td>\n",
       "      <td>8875</td>\n",
       "      <td>8444</td>\n",
       "      <td>10431</td>\n",
       "      <td>10416</td>\n",
       "      <td>10354</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014</th>\n",
       "      <td>12683</td>\n",
       "      <td>12813</td>\n",
       "      <td>10950</td>\n",
       "      <td>10278</td>\n",
       "      <td>12309</td>\n",
       "      <td>12440</td>\n",
       "      <td>12948</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015</th>\n",
       "      <td>13273</td>\n",
       "      <td>13452</td>\n",
       "      <td>11586</td>\n",
       "      <td>10624</td>\n",
       "      <td>13512</td>\n",
       "      <td>13381</td>\n",
       "      <td>13320</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016</th>\n",
       "      <td>14059</td>\n",
       "      <td>13708</td>\n",
       "      <td>11467</td>\n",
       "      <td>10554</td>\n",
       "      <td>14050</td>\n",
       "      <td>13338</td>\n",
       "      <td>13900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017</th>\n",
       "      <td>10677</td>\n",
       "      <td>10638</td>\n",
       "      <td>8514</td>\n",
       "      <td>8124</td>\n",
       "      <td>10545</td>\n",
       "      <td>10628</td>\n",
       "      <td>10576</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Weekday  Friday  Monday  Saturday  Sunday  Thursday  Tuesday  Wednesday\n",
       "Year                                                                   \n",
       "2012       8549    8786      7442    7189      8440     8191       8440\n",
       "2013      10380   10627      8875    8444     10431    10416      10354\n",
       "2014      12683   12813     10950   10278     12309    12440      12948\n",
       "2015      13273   13452     11586   10624     13512    13381      13320\n",
       "2016      14059   13708     11467   10554     14050    13338      13900\n",
       "2017      10677   10638      8514    8124     10545    10628      10576"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_table = crime_wd_y.rename_axis(['Year', 'Weekday']).unstack('Weekday')\n",
    "crime_table"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "272"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "criteria = crime['REPORTED_DATE'].dt.year == 2017\n",
    "crime.loc[criteria, 'REPORTED_DATE'].dt.dayofyear.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.745"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "round(272 / 365, 3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "REPORTED_DATE\n",
       "2012    0.748\n",
       "2013    0.725\n",
       "2014    0.751\n",
       "2015    0.748\n",
       "2016    0.752\n",
       "2017    1.000\n",
       "Name: REPORTED_DATE, dtype: float64"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_pct = crime['REPORTED_DATE'].dt.dayofyear.le(272) \\\n",
    "                                  .groupby(year) \\\n",
    "                                  .mean() \\\n",
    "                                  .round(3)\n",
    "crime_pct"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.748"
      ]
     },
     "execution_count": 114,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_pct.loc[2012:2016].median()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Weekday</th>\n",
       "      <th>Monday</th>\n",
       "      <th>Tuesday</th>\n",
       "      <th>Wednesday</th>\n",
       "      <th>Thursday</th>\n",
       "      <th>Friday</th>\n",
       "      <th>Saturday</th>\n",
       "      <th>Sunday</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Year</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012</th>\n",
       "      <td>8786</td>\n",
       "      <td>8191</td>\n",
       "      <td>8440</td>\n",
       "      <td>8440</td>\n",
       "      <td>8549</td>\n",
       "      <td>7442</td>\n",
       "      <td>7189</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013</th>\n",
       "      <td>10627</td>\n",
       "      <td>10416</td>\n",
       "      <td>10354</td>\n",
       "      <td>10431</td>\n",
       "      <td>10380</td>\n",
       "      <td>8875</td>\n",
       "      <td>8444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014</th>\n",
       "      <td>12813</td>\n",
       "      <td>12440</td>\n",
       "      <td>12948</td>\n",
       "      <td>12309</td>\n",
       "      <td>12683</td>\n",
       "      <td>10950</td>\n",
       "      <td>10278</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015</th>\n",
       "      <td>13452</td>\n",
       "      <td>13381</td>\n",
       "      <td>13320</td>\n",
       "      <td>13512</td>\n",
       "      <td>13273</td>\n",
       "      <td>11586</td>\n",
       "      <td>10624</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016</th>\n",
       "      <td>13708</td>\n",
       "      <td>13338</td>\n",
       "      <td>13900</td>\n",
       "      <td>14050</td>\n",
       "      <td>14059</td>\n",
       "      <td>11467</td>\n",
       "      <td>10554</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017</th>\n",
       "      <td>14221</td>\n",
       "      <td>14208</td>\n",
       "      <td>14139</td>\n",
       "      <td>14097</td>\n",
       "      <td>14274</td>\n",
       "      <td>11382</td>\n",
       "      <td>10860</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Weekday  Monday  Tuesday  Wednesday  Thursday  Friday  Saturday  Sunday\n",
       "Year                                                                   \n",
       "2012       8786     8191       8440      8440    8549      7442    7189\n",
       "2013      10627    10416      10354     10431   10380      8875    8444\n",
       "2014      12813    12440      12948     12309   12683     10950   10278\n",
       "2015      13452    13381      13320     13512   13273     11586   10624\n",
       "2016      13708    13338      13900     14050   14059     11467   10554\n",
       "2017      14221    14208      14139     14097   14274     11382   10860"
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_table.loc[2017] = crime_table.loc[2017].div(.748).astype('int')\n",
    "crime_table = crime_table.reindex(columns=days)\n",
    "crime_table"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x117a37ba8>"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nMn9/fw4ePFin8Q3vZG02G/n5+TWWbd++HYvFYvRQIiIiF3Xq1CmKi4vp1asXAPfeey/BwcF4eHjQ\nr18/9uzZg9VqpayszHEbm832i2VlZWUEBgbWqQbDQzYlJYXnn3+ePn36EB4eTt++fXnhhRc0XSwi\nIr9g5nTx9u3bufXWW4Fz59U9N6CnAAATiUlEQVS/5557OHz4MABbt27l5ptvpnv37uTk5ACwc+dO\n2rdvj9VqxWKxcODAAex2O7m5ufTo0aNO+2f4dHFRUREFBQVYLBbi4uIYPHgwALGxsaSnpxs9nIiI\nyAV98803XHfddcC5MJ83bx6PPvoo9erV48Ybb2TEiBF4eXnx0UcfER0djd1uZ/78+cC544umTJlC\ndXU1YWFhdOnSpU41GB6yK1asYNOmTdhsNiZNmkRlZSWRkZHY7XajhxIRERdn5rdOHnrooRr/DwsL\nIyws7BfrzZkz5xfLunbtyvr1639zDYaHrMVioUGDBgCkpaUxZswYgoKC9PUdERH53TH8M9mWLVuS\nnJxMeXk5VquV1NRU5syZQ3FxsdFDiYiIi9NF22tp/vz5dOjQwXEHBAUFkZ6ezt133230UCIiIlc1\nw6eLvb29HWfZOK9JkyZMnz7d6KFERESuaqacVlFEROTXcJVp37rSRdtFRERMok5WREScRp2siIiI\n1ImHXWeJEBERMYU6WREREZMoZEVEREyikBURETGJQlZERMQkClkRERGTKGRFRERM4rIhm5eXR4cO\nHXjnnXdqLI+IiGDatGl13u7atWtZtmzZby3vV0lJSSEmJoaBAwfSt29fYmJimDhxoqFjxMXFkZeX\n95u3Exsby+effw5AZWUlISEhPP/8847f/+Uvf6GgoOCS26ioqOCOO+74zbX8t7179xITE/Obt3Oh\nx6NXr17ExcUZUOUv5eTk/Kbn6m/x7bff0r17d2JiYhw/qampNdaJi4ujsrKyxjJn1rxq1Sruv/9+\nHnjgAR588EG++OKLi667bt06zp49W6dxQkND61pindRmvy7HqNeCGMelz/jUpk0b3nrrLQYNGgTA\nV199xenTp51c1a93/o/Vhg0bKC4uZsqUKU6u6OLCwsLIz8+nc+fO7Nixg7CwMD744AMefPBBKioq\nOHToEB07dnR2mb/JhR6PvLw8XnnlFSdXZo62bduSkZFx0d8/88wzV7CaSysqKuLf//43a9euxcPD\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x117e2fb38>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "sns.heatmap(crime_table, cmap='Greys')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Population</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Year</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2017</th>\n",
       "      <td>705000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016</th>\n",
       "      <td>693000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015</th>\n",
       "      <td>680000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014</th>\n",
       "      <td>662000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013</th>\n",
       "      <td>647000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012</th>\n",
       "      <td>634000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Population\n",
       "Year            \n",
       "2017      705000\n",
       "2016      693000\n",
       "2015      680000\n",
       "2014      662000\n",
       "2013      647000\n",
       "2012      634000"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "denver_pop = pd.read_csv('data/denver_pop.csv', index_col='Year')\n",
    "denver_pop"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Weekday</th>\n",
       "      <th>Monday</th>\n",
       "      <th>Tuesday</th>\n",
       "      <th>Wednesday</th>\n",
       "      <th>Thursday</th>\n",
       "      <th>Friday</th>\n",
       "      <th>Saturday</th>\n",
       "      <th>Sunday</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Year</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012</th>\n",
       "      <td>1385</td>\n",
       "      <td>1291</td>\n",
       "      <td>1331</td>\n",
       "      <td>1331</td>\n",
       "      <td>1348</td>\n",
       "      <td>1173</td>\n",
       "      <td>1133</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013</th>\n",
       "      <td>1642</td>\n",
       "      <td>1609</td>\n",
       "      <td>1600</td>\n",
       "      <td>1612</td>\n",
       "      <td>1604</td>\n",
       "      <td>1371</td>\n",
       "      <td>1305</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014</th>\n",
       "      <td>1935</td>\n",
       "      <td>1879</td>\n",
       "      <td>1955</td>\n",
       "      <td>1859</td>\n",
       "      <td>1915</td>\n",
       "      <td>1654</td>\n",
       "      <td>1552</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015</th>\n",
       "      <td>1978</td>\n",
       "      <td>1967</td>\n",
       "      <td>1958</td>\n",
       "      <td>1987</td>\n",
       "      <td>1951</td>\n",
       "      <td>1703</td>\n",
       "      <td>1562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016</th>\n",
       "      <td>1978</td>\n",
       "      <td>1924</td>\n",
       "      <td>2005</td>\n",
       "      <td>2027</td>\n",
       "      <td>2028</td>\n",
       "      <td>1654</td>\n",
       "      <td>1522</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017</th>\n",
       "      <td>2017</td>\n",
       "      <td>2015</td>\n",
       "      <td>2005</td>\n",
       "      <td>1999</td>\n",
       "      <td>2024</td>\n",
       "      <td>1614</td>\n",
       "      <td>1540</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Weekday  Monday  Tuesday  Wednesday  Thursday  Friday  Saturday  Sunday\n",
       "Year                                                                   \n",
       "2012       1385     1291       1331      1331    1348      1173    1133\n",
       "2013       1642     1609       1600      1612    1604      1371    1305\n",
       "2014       1935     1879       1955      1859    1915      1654    1552\n",
       "2015       1978     1967       1958      1987    1951      1703    1562\n",
       "2016       1978     1924       2005      2027    2028      1654    1522\n",
       "2017       2017     2015       2005      1999    2024      1614    1540"
      ]
     },
     "execution_count": 118,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "den_100k = denver_pop.div(100000).squeeze()\n",
    "crime_table2 = crime_table.div(den_100k, axis='index').astype('int')\n",
    "crime_table2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1203024e0>"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nV5+jJ0+e5OTJkwDEx8czcuRIZs2aRePGjR1j/8///A+ffPIJu3fvpmPHjmWyX9WrV7/m8+taz8W7\n+VqQG6vwHSpAz549Wb9+PQ899BDffvstNWrUoHfv3kRFReHu7k5gYCDjxo3jo48+uubvz5492/GX\nnLe3N9WqVaNFixYkJSXRr18/PD09qVevHj/++CP16tWjX79+9O/fn8mTJxvfl0cffRQfHx/69u3L\nww8/7FiCjomJcbzwCgoKmDhxIg8++CB/+ctfWLduHRaLhZEjRzreV42IiKBmzZp4eXkB8Jvf/IbJ\nkyezceNGqlevTqVKlSgqKsLT05PQ0FA++eQTGjVqdMPafv3rXxMbG8trr70GXAkVHx8fmjdvjru7\nOxMnTmT48OHY7Xa8vb157bXXaNOmDS+//DL9+/enQYMGN/wPtmnTprRr147+/ftTVFREixYtqFOn\nDi1atGDIkCFUr14db29vOnXqRLdu3YiOjubjjz923EdWq5VWrVoRFhZG1apV8fX15ccffwSga9eu\nTJ06ldmzZ9/xYwRXjnqeOnUq/v7+113ya9KkCc888ww1atSgTp06tGzZkkmTJhEdHc2yZcuoWbMm\nlStXpn79+nh5eREeHo6npyd+fn6OusPDw+nUqRPr1683UvftKA81d+vWjcOHD9O3b1+qVq2K3W5n\n/Pjx7N69m379+uHr60utWrUcNbRu3Zrhw4fz1ltvXfP19HNdu3Zlz5499O3bl/vvv58aNWoA8Nvf\n/pY//OEP3HfffdStW5ezZ88CUKdOHby9vXnssceuuWJhYr8sFkupz6+rRo0a5dTXgvyMXW7Zvn37\n7C+99JKzyzBm8eLF9nfffdfZZZSp/Px8e3h4uL24uNjZpdySH374wR4VFeXsMm5JRaz5Vg0fPtx+\n5MgRZ5dxWyrqa6EiqPBLvnfbihUrmDRpEi+++KKzSzFiwoQJZGRkOJbLXdHevXvp168ff/jDH665\npFleffrpp/z+979n7Nixzi7lplXEmm9FQUEB4eHhNG3alPr16zu7nFtWUV8LFYWuhyoiImKA/kQR\nERExQIEqIiJigAJVRETEAAWq3POGDBnC5s2bHd/PmjWLxx9/vMSJ4du3b8/x48dvadwJEyaUelq3\nBQsW3LWLMYhI2VKgyj2vbdu27Nmzx/H99u3beeyxxxzbjh49StWqVa/5GUYRkasUqHLPa9euneNM\nMydPnsTT05Pu3buTnp4OQEZGBsHBwezfv5/+/fsTFhbG0KFD+fbbb4ErgTtkyBDCwsLo379/iTPb\nAFy8eJH+/fs7TlS+dOlSunXrxrPPPuu4JB5c+UhW37596d27N2FhYWRnZ7Njx44S50B+//33jV6M\nQUTMUaDKPe+RRx7h2LFjFBYWkp6eTnBwMMHBwSUCtU2bNsTGxjJ37lw++OADhgwZQlxcHHDlLFYv\nvfQSH3zwAdOmTStx/dRLly7xpz/9ie7duzNw4EAOHDjAX//6Vz744APefvttfvjhB+DKxRg2b97s\nuNpOp06dSE1NpW3btpw6dYpjx44BsG7dOsLDw+/yPSQiN8MlTj0ocicqVapEy5YtOXDgAOnp6Qwc\nOJB69epRUFDA+fPn+eKLLxg0aBDffvstI0aMcPxebm4ueXl5fPnll7z88suO7fn5+Y7T1L3xxhu4\nu7s7LjG2a9cuOnbsiLe3NwA9evTAZrNhtVqZO3cuH330EUeOHOF///d/adasGW5uboSFhbFhwwbC\nw8P56aefaNmy5V28d0TkZilQRbjyPurevXvZv3+/4xyn7dq14/PPP3ec2/WBBx5wnJ+2uLiY06dP\nY7PZ8PT0LHHe2h9++IHq1asD0KtXL/Lz85k/fz4xMTG4ubmVuHqIh4cHRUVFnDhxgsjISJ577jlC\nQkKoVauW48IGYWFh/P73v8fT07NMLsggImZoyVeEK+G5fv16Gjdu7DjheXBwMG+//TbBwcE0aNCA\n8+fPk5GRAVy5Fu64cePw8fHhwQcfdATqP/7xDwYOHOgYt1mzZrz00kts3LiRr7/+mnbt2rFlyxZy\ncnIoLCzks88+A65cJaR+/foMHjyYX/3qV2zevJni4mIAAgICqFu3LqtXr1agipRj6lBFgMaNG3Pu\n3DkGDBjg2Na2bVtGjx7tuE7sG2+8QXx8PIWFhVitVmbNmgVcuVrR5MmTWbp0KRaLhddff73EZbaq\nV6/O2LFjiY2NZe3atQwaNIhnnnkGX19f7r//fuBKeK9atYqePXtit9tp06YNhw4dcozRs2dPNm3a\nRJ06de7SPSIit0rn8hUp5y5fvsz48ePp0aMH3bp1c3Y5InIdWvIVKcfsdjsdOnTAzc2Nrl27Orsc\nEbkBdagiIiIGqEMVERExQIEqIiJigAJVRETEAAWqiIiIAQpUERERAxSoIiIiBvx/sBU3z1M3MWQA\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1202df748>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(crime_table2, cmap='Greys')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## How it works..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Monday       70024\n",
       "Tuesday      68394\n",
       "Wednesday    69538\n",
       "Thursday     69287\n",
       "Friday       69621\n",
       "Saturday     58834\n",
       "Sunday       55213\n",
       "Name: REPORTED_DATE, dtype: int64"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wd_counts.loc[days]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/Ted/anaconda/lib/python3.6/site-packages/pandas/core/indexes/base.py:3033: RuntimeWarning: '<' not supported between instances of 'str' and 'int', sort order is undefined for incomparable objects\n",
      "  return this.join(other, how=how, return_indexers=return_indexers)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Monday</th>\n",
       "      <th>Tuesday</th>\n",
       "      <th>Wednesday</th>\n",
       "      <th>Thursday</th>\n",
       "      <th>Friday</th>\n",
       "      <th>Saturday</th>\n",
       "      <th>Sunday</th>\n",
       "      <th>2017</th>\n",
       "      <th>2016</th>\n",
       "      <th>2015</th>\n",
       "      <th>2014</th>\n",
       "      <th>2013</th>\n",
       "      <th>2012</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Year</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Monday  Tuesday  Wednesday  Thursday  Friday  Saturday  Sunday  2017  \\\n",
       "Year                                                                         \n",
       "2012     NaN      NaN        NaN       NaN     NaN       NaN     NaN   NaN   \n",
       "2013     NaN      NaN        NaN       NaN     NaN       NaN     NaN   NaN   \n",
       "2014     NaN      NaN        NaN       NaN     NaN       NaN     NaN   NaN   \n",
       "2015     NaN      NaN        NaN       NaN     NaN       NaN     NaN   NaN   \n",
       "2016     NaN      NaN        NaN       NaN     NaN       NaN     NaN   NaN   \n",
       "2017     NaN      NaN        NaN       NaN     NaN       NaN     NaN   NaN   \n",
       "\n",
       "      2016  2015  2014  2013  2012  \n",
       "Year                                \n",
       "2012   NaN   NaN   NaN   NaN   NaN  \n",
       "2013   NaN   NaN   NaN   NaN   NaN  \n",
       "2014   NaN   NaN   NaN   NaN   NaN  \n",
       "2015   NaN   NaN   NaN   NaN   NaN  \n",
       "2016   NaN   NaN   NaN   NaN   NaN  \n",
       "2017   NaN   NaN   NaN   NaN   NaN  "
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_table / den_100k"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## There's more..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "ADJ_2017 = .748\n",
    "\n",
    "def count_crime(df, offense_cat): \n",
    "    df = df[df['OFFENSE_CATEGORY_ID'] == offense_cat]\n",
    "    weekday = df['REPORTED_DATE'].dt.weekday_name\n",
    "    year = df['REPORTED_DATE'].dt.year\n",
    "    \n",
    "    ct = df.groupby([year, weekday]).size().unstack()\n",
    "    ct.loc[2017] = ct.loc[2017].div(ADJ_2017).astype('int')\n",
    "    \n",
    "    pop = pd.read_csv('data/denver_pop.csv', index_col='Year')\n",
    "    pop = pop.squeeze().div(100000)\n",
    "    \n",
    "    ct = ct.div(pop, axis=0).astype('int')\n",
    "    ct = ct.reindex(columns=days)\n",
    "    sns.heatmap(ct, cmap='Greys')\n",
    "    return ct"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th>Monday</th>\n",
       "      <th>Tuesday</th>\n",
       "      <th>Wednesday</th>\n",
       "      <th>Thursday</th>\n",
       "      <th>Friday</th>\n",
       "      <th>Saturday</th>\n",
       "      <th>Sunday</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012</th>\n",
       "      <td>95</td>\n",
       "      <td>72</td>\n",
       "      <td>72</td>\n",
       "      <td>76</td>\n",
       "      <td>71</td>\n",
       "      <td>78</td>\n",
       "      <td>76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013</th>\n",
       "      <td>85</td>\n",
       "      <td>74</td>\n",
       "      <td>74</td>\n",
       "      <td>69</td>\n",
       "      <td>65</td>\n",
       "      <td>68</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014</th>\n",
       "      <td>94</td>\n",
       "      <td>76</td>\n",
       "      <td>72</td>\n",
       "      <td>70</td>\n",
       "      <td>76</td>\n",
       "      <td>67</td>\n",
       "      <td>67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015</th>\n",
       "      <td>108</td>\n",
       "      <td>102</td>\n",
       "      <td>89</td>\n",
       "      <td>101</td>\n",
       "      <td>92</td>\n",
       "      <td>85</td>\n",
       "      <td>78</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016</th>\n",
       "      <td>119</td>\n",
       "      <td>102</td>\n",
       "      <td>100</td>\n",
       "      <td>99</td>\n",
       "      <td>97</td>\n",
       "      <td>86</td>\n",
       "      <td>85</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2017</th>\n",
       "      <td>114</td>\n",
       "      <td>118</td>\n",
       "      <td>111</td>\n",
       "      <td>106</td>\n",
       "      <td>111</td>\n",
       "      <td>91</td>\n",
       "      <td>102</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "REPORTED_DATE  Monday  Tuesday  Wednesday  Thursday  Friday  Saturday  Sunday\n",
       "2012               95       72         72        76      71        78      76\n",
       "2013               85       74         74        69      65        68      67\n",
       "2014               94       76         72        70      76        67      67\n",
       "2015              108      102         89       101      92        85      78\n",
       "2016              119      102        100        99      97        86      85\n",
       "2017              114      118        111       106     111        91     102"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nBbKMQi2GyAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11b1bdf28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "count_crime(crime, 'auto-theft')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Grouping with anonymous functions with a DatetimeIndex"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "crime_sort = pd.read_hdf('data/crime.h5', 'crime') \\\n",
    "               .set_index('REPORTED_DATE') \\\n",
    "               .sort_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['nanosecond', 'month', 'daysinmonth', 'year', 'is_quarter_start', 'offset', 'tz_localize', 'second', 'is_leap_year', 'resolution', 'freqstr', 'week', 'weekday', 'is_month_start', 'normalize', 'to_julian_date', 'to_period', 'freq', 'tzinfo', 'weekday_name', 'microsecond', 'days_in_month', 'date', 'is_quarter_end', 'tz', 'to_datetime', 'tz_convert', 'weekofyear', 'time', 'hour', 'min', 'max', 'floor', 'is_year_start', 'ceil', 'dayofweek', 'day', 'quarter', 'dayofyear', 'round', 'strftime', 'is_month_end', 'minute', 'is_year_end', 'to_pydatetime']\n"
     ]
    }
   ],
   "source": [
    "common_attrs = set(dir(crime_sort.index)) & set(dir(pd.Timestamp))\n",
    "print([attr for attr in common_attrs if attr[0] != '_'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Monday       70024\n",
       "Friday       69621\n",
       "Wednesday    69538\n",
       "Thursday     69287\n",
       "Tuesday      68394\n",
       "Saturday     58834\n",
       "Sunday       55213\n",
       "Name: REPORTED_DATE, dtype: int64"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.index.weekday_name.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Friday</th>\n",
       "      <td>48833</td>\n",
       "      <td>20814</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Monday</th>\n",
       "      <td>52158</td>\n",
       "      <td>17895</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Saturday</th>\n",
       "      <td>43363</td>\n",
       "      <td>15516</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sunday</th>\n",
       "      <td>42315</td>\n",
       "      <td>12968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Thursday</th>\n",
       "      <td>49470</td>\n",
       "      <td>19845</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Tuesday</th>\n",
       "      <td>49658</td>\n",
       "      <td>18755</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Wednesday</th>\n",
       "      <td>50054</td>\n",
       "      <td>19508</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           IS_CRIME  IS_TRAFFIC\n",
       "Friday        48833       20814\n",
       "Monday        52158       17895\n",
       "Saturday      43363       15516\n",
       "Sunday        42315       12968\n",
       "Thursday      49470       19845\n",
       "Tuesday       49658       18755\n",
       "Wednesday     50054       19508"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.groupby(lambda x: x.weekday_name)['IS_CRIME', 'IS_TRAFFIC'].sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style  type=\"text/css\" >\n",
       "    #T_915cbd46_b3cd_11e7_a171_b8e85647e68crow6_col0 {\n",
       "            background-color:  lightgrey;\n",
       "        }    #T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col1 {\n",
       "            background-color:  lightgrey;\n",
       "        }    #T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col2 {\n",
       "            background-color:  lightgrey;\n",
       "        }    #T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col3 {\n",
       "            background-color:  lightgrey;\n",
       "        }    #T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col4 {\n",
       "            background-color:  lightgrey;\n",
       "        }    #T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col5 {\n",
       "            background-color:  lightgrey;\n",
       "        }    #T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col11 {\n",
       "            background-color:  lightgrey;\n",
       "        }    #T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col6 {\n",
       "            background-color:  lightgrey;\n",
       "        }    #T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col7 {\n",
       "            background-color:  lightgrey;\n",
       "        }    #T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col8 {\n",
       "            background-color:  lightgrey;\n",
       "        }    #T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col9 {\n",
       "            background-color:  lightgrey;\n",
       "        }    #T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col10 {\n",
       "            background-color:  lightgrey;\n",
       "        }</style>  \n",
       "<table id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68c\" > \n",
       "<thead>    <tr> \n",
       "        <th class=\"blank level0\" ></th> \n",
       "        <th class=\"col_heading level0 col0\" colspan=6>IS_CRIME</th> \n",
       "        <th class=\"col_heading level0 col6\" colspan=6>IS_TRAFFIC</th> \n",
       "    </tr>    <tr> \n",
       "        <th class=\"blank level1\" ></th> \n",
       "        <th class=\"col_heading level1 col0\" >2012</th> \n",
       "        <th class=\"col_heading level1 col1\" >2013</th> \n",
       "        <th class=\"col_heading level1 col2\" >2014</th> \n",
       "        <th class=\"col_heading level1 col3\" >2015</th> \n",
       "        <th class=\"col_heading level1 col4\" >2016</th> \n",
       "        <th class=\"col_heading level1 col5\" >2017</th> \n",
       "        <th class=\"col_heading level1 col6\" >2012</th> \n",
       "        <th class=\"col_heading level1 col7\" >2013</th> \n",
       "        <th class=\"col_heading level1 col8\" >2014</th> \n",
       "        <th class=\"col_heading level1 col9\" >2015</th> \n",
       "        <th class=\"col_heading level1 col10\" >2016</th> \n",
       "        <th class=\"col_heading level1 col11\" >2017</th> \n",
       "    </tr></thead> \n",
       "<tbody>    <tr> \n",
       "        <th id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68clevel0_row0\" class=\"row_heading level0 row0\" >0</th> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow0_col0\" class=\"data row0 col0\" >2422</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow0_col1\" class=\"data row0 col1\" >4040</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow0_col2\" class=\"data row0 col2\" >5649</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow0_col3\" class=\"data row0 col3\" >5649</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow0_col4\" class=\"data row0 col4\" >5377</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow0_col5\" class=\"data row0 col5\" >3811</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow0_col6\" class=\"data row0 col6\" >919</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow0_col7\" class=\"data row0 col7\" >792</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow0_col8\" class=\"data row0 col8\" >978</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow0_col9\" class=\"data row0 col9\" >1136</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow0_col10\" class=\"data row0 col10\" >980</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow0_col11\" class=\"data row0 col11\" >782</td> \n",
       "    </tr>    <tr> \n",
       "        <th id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68clevel0_row1\" class=\"row_heading level0 row1\" >2</th> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow1_col0\" class=\"data row1 col0\" >1888</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow1_col1\" class=\"data row1 col1\" >3214</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow1_col2\" class=\"data row1 col2\" >4245</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow1_col3\" class=\"data row1 col3\" >4050</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow1_col4\" class=\"data row1 col4\" >4091</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow1_col5\" class=\"data row1 col5\" >3041</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow1_col6\" class=\"data row1 col6\" >718</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow1_col7\" class=\"data row1 col7\" >652</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow1_col8\" class=\"data row1 col8\" >779</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow1_col9\" class=\"data row1 col9\" >773</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow1_col10\" class=\"data row1 col10\" >718</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow1_col11\" class=\"data row1 col11\" >537</td> \n",
       "    </tr>    <tr> \n",
       "        <th id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68clevel0_row2\" class=\"row_heading level0 row2\" >4</th> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow2_col0\" class=\"data row2 col0\" >1472</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow2_col1\" class=\"data row2 col1\" >2181</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow2_col2\" class=\"data row2 col2\" >2956</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow2_col3\" class=\"data row2 col3\" >2959</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow2_col4\" class=\"data row2 col4\" >3044</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow2_col5\" class=\"data row2 col5\" >2255</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow2_col6\" class=\"data row2 col6\" >399</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow2_col7\" class=\"data row2 col7\" >378</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow2_col8\" class=\"data row2 col8\" >424</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow2_col9\" class=\"data row2 col9\" >471</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow2_col10\" class=\"data row2 col10\" >464</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow2_col11\" class=\"data row2 col11\" >313</td> \n",
       "    </tr>    <tr> \n",
       "        <th id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68clevel0_row3\" class=\"row_heading level0 row3\" >6</th> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow3_col0\" class=\"data row3 col0\" >1067</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow3_col1\" class=\"data row3 col1\" >1365</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow3_col2\" class=\"data row3 col2\" >1750</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow3_col3\" class=\"data row3 col3\" >2167</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow3_col4\" class=\"data row3 col4\" >2108</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow3_col5\" class=\"data row3 col5\" >1567</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow3_col6\" class=\"data row3 col6\" >411</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow3_col7\" class=\"data row3 col7\" >399</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow3_col8\" class=\"data row3 col8\" >479</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow3_col9\" class=\"data row3 col9\" >494</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow3_col10\" class=\"data row3 col10\" >593</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow3_col11\" class=\"data row3 col11\" >462</td> \n",
       "    </tr>    <tr> \n",
       "        <th id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68clevel0_row4\" class=\"row_heading level0 row4\" >8</th> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow4_col0\" class=\"data row4 col0\" >2998</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow4_col1\" class=\"data row4 col1\" >3445</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow4_col2\" class=\"data row4 col2\" >3727</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow4_col3\" class=\"data row4 col3\" >4161</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow4_col4\" class=\"data row4 col4\" >4488</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow4_col5\" class=\"data row4 col5\" >3251</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow4_col6\" class=\"data row4 col6\" >1957</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow4_col7\" class=\"data row4 col7\" >1955</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow4_col8\" class=\"data row4 col8\" >2210</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow4_col9\" class=\"data row4 col9\" >2331</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow4_col10\" class=\"data row4 col10\" >2372</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow4_col11\" class=\"data row4 col11\" >1828</td> \n",
       "    </tr>    <tr> \n",
       "        <th id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68clevel0_row5\" class=\"row_heading level0 row5\" >10</th> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow5_col0\" class=\"data row5 col0\" >4305</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow5_col1\" class=\"data row5 col1\" >5035</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow5_col2\" class=\"data row5 col2\" >5658</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow5_col3\" class=\"data row5 col3\" >6205</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow5_col4\" class=\"data row5 col4\" >6218</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow5_col5\" class=\"data row5 col5\" >4993</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow5_col6\" class=\"data row5 col6\" >1979</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow5_col7\" class=\"data row5 col7\" >1901</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow5_col8\" class=\"data row5 col8\" >2139</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow5_col9\" class=\"data row5 col9\" >2320</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow5_col10\" class=\"data row5 col10\" >2303</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow5_col11\" class=\"data row5 col11\" >1873</td> \n",
       "    </tr>    <tr> \n",
       "        <th id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68clevel0_row6\" class=\"row_heading level0 row6\" >12</th> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow6_col0\" class=\"data row6 col0\" >4496</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow6_col1\" class=\"data row6 col1\" >5524</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow6_col2\" class=\"data row6 col2\" >6434</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow6_col3\" class=\"data row6 col3\" >6841</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow6_col4\" class=\"data row6 col4\" >7226</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow6_col5\" class=\"data row6 col5\" >5463</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow6_col6\" class=\"data row6 col6\" >2200</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow6_col7\" class=\"data row6 col7\" >2138</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow6_col8\" class=\"data row6 col8\" >2379</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow6_col9\" class=\"data row6 col9\" >2631</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow6_col10\" class=\"data row6 col10\" >2760</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow6_col11\" class=\"data row6 col11\" >1986</td> \n",
       "    </tr>    <tr> \n",
       "        <th id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68clevel0_row7\" class=\"row_heading level0 row7\" >14</th> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow7_col0\" class=\"data row7 col0\" >4266</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow7_col1\" class=\"data row7 col1\" >5698</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow7_col2\" class=\"data row7 col2\" >6708</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow7_col3\" class=\"data row7 col3\" >7218</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow7_col4\" class=\"data row7 col4\" >6896</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow7_col5\" class=\"data row7 col5\" >5396</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow7_col6\" class=\"data row7 col6\" >2241</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow7_col7\" class=\"data row7 col7\" >2245</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow7_col8\" class=\"data row7 col8\" >2630</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow7_col9\" class=\"data row7 col9\" >2840</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow7_col10\" class=\"data row7 col10\" >2763</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow7_col11\" class=\"data row7 col11\" >1990</td> \n",
       "    </tr>    <tr> \n",
       "        <th id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68clevel0_row8\" class=\"row_heading level0 row8\" >16</th> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col0\" class=\"data row8 col0\" >4113</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col1\" class=\"data row8 col1\" >5889</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col2\" class=\"data row8 col2\" >7351</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col3\" class=\"data row8 col3\" >7643</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col4\" class=\"data row8 col4\" >7926</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col5\" class=\"data row8 col5\" >6338</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col6\" class=\"data row8 col6\" >2714</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col7\" class=\"data row8 col7\" >2562</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col8\" class=\"data row8 col8\" >3002</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col9\" class=\"data row8 col9\" >3160</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col10\" class=\"data row8 col10\" >3527</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow8_col11\" class=\"data row8 col11\" >2784</td> \n",
       "    </tr>    <tr> \n",
       "        <th id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68clevel0_row9\" class=\"row_heading level0 row9\" >18</th> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col0\" class=\"data row9 col0\" >3660</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col1\" class=\"data row9 col1\" >5094</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col2\" class=\"data row9 col2\" >6586</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col3\" class=\"data row9 col3\" >7015</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col4\" class=\"data row9 col4\" >7407</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col5\" class=\"data row9 col5\" >6157</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col6\" class=\"data row9 col6\" >3118</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col7\" class=\"data row9 col7\" >2704</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col8\" class=\"data row9 col8\" >3217</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col9\" class=\"data row9 col9\" >3412</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col10\" class=\"data row9 col10\" >3608</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow9_col11\" class=\"data row9 col11\" >2718</td> \n",
       "    </tr>    <tr> \n",
       "        <th id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68clevel0_row10\" class=\"row_heading level0 row10\" >20</th> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow10_col0\" class=\"data row10 col0\" >3521</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow10_col1\" class=\"data row10 col1\" >4895</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow10_col2\" class=\"data row10 col2\" >6130</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow10_col3\" class=\"data row10 col3\" >6360</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow10_col4\" class=\"data row10 col4\" >6963</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow10_col5\" class=\"data row10 col5\" >5272</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow10_col6\" class=\"data row10 col6\" >1787</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow10_col7\" class=\"data row10 col7\" >1806</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow10_col8\" class=\"data row10 col8\" >1994</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow10_col9\" class=\"data row10 col9\" >2071</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow10_col10\" class=\"data row10 col10\" >2184</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow10_col11\" class=\"data row10 col11\" >1491</td> \n",
       "    </tr>    <tr> \n",
       "        <th id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68clevel0_row11\" class=\"row_heading level0 row11\" >22</th> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow11_col0\" class=\"data row11 col0\" >3078</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow11_col1\" class=\"data row11 col1\" >4318</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow11_col2\" class=\"data row11 col2\" >5496</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow11_col3\" class=\"data row11 col3\" >5626</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow11_col4\" class=\"data row11 col4\" >5637</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow11_col5\" class=\"data row11 col5\" >4358</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow11_col6\" class=\"data row11 col6\" >1343</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow11_col7\" class=\"data row11 col7\" >1330</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow11_col8\" class=\"data row11 col8\" >1532</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow11_col9\" class=\"data row11 col9\" >1671</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow11_col10\" class=\"data row11 col10\" >1472</td> \n",
       "        <td id=\"T_915cbd46_b3cd_11e7_a171_b8e85647e68crow11_col11\" class=\"data row11 col11\" >1072</td> \n",
       "    </tr></tbody> \n",
       "</table> "
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x1205475c0>"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "funcs = [lambda x: x.round('2h').hour, lambda x: x.year]\n",
    "cr_group = crime_sort.groupby(funcs)['IS_CRIME', 'IS_TRAFFIC'].sum()\n",
    "cr_final = cr_group.unstack()\n",
    "cr_final.style.highlight_max(color='lightgrey')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## There's more..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2012</th>\n",
       "      <th>2013</th>\n",
       "      <th>2014</th>\n",
       "      <th>2015</th>\n",
       "      <th>2016</th>\n",
       "      <th>2017</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>919</td>\n",
       "      <td>792</td>\n",
       "      <td>978</td>\n",
       "      <td>1136</td>\n",
       "      <td>980</td>\n",
       "      <td>782</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>718</td>\n",
       "      <td>652</td>\n",
       "      <td>779</td>\n",
       "      <td>773</td>\n",
       "      <td>718</td>\n",
       "      <td>537</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>399</td>\n",
       "      <td>378</td>\n",
       "      <td>424</td>\n",
       "      <td>471</td>\n",
       "      <td>464</td>\n",
       "      <td>313</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>411</td>\n",
       "      <td>399</td>\n",
       "      <td>479</td>\n",
       "      <td>494</td>\n",
       "      <td>593</td>\n",
       "      <td>462</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>1957</td>\n",
       "      <td>1955</td>\n",
       "      <td>2210</td>\n",
       "      <td>2331</td>\n",
       "      <td>2372</td>\n",
       "      <td>1828</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   2012  2013  2014  2015  2016  2017\n",
       "0   919   792   978  1136   980   782\n",
       "2   718   652   779   773   718   537\n",
       "4   399   378   424   471   464   313\n",
       "6   411   399   479   494   593   462\n",
       "8  1957  1955  2210  2331  2372  1828"
      ]
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cr_final.xs('IS_TRAFFIC', axis='columns', level=0).head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>IS_CRIME</th>\n",
       "      <th>IS_TRAFFIC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5377</td>\n",
       "      <td>980</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4091</td>\n",
       "      <td>718</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3044</td>\n",
       "      <td>464</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2108</td>\n",
       "      <td>593</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>4488</td>\n",
       "      <td>2372</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   IS_CRIME  IS_TRAFFIC\n",
       "0      5377         980\n",
       "2      4091         718\n",
       "4      3044         464\n",
       "6      2108         593\n",
       "8      4488        2372"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cr_final.xs(2016, axis='columns', level=1).head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Grouping by a Timestamp and another column"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>UNIQUE_ID</th>\n",
       "      <th>POSITION_TITLE</th>\n",
       "      <th>DEPARTMENT</th>\n",
       "      <th>BASE_SALARY</th>\n",
       "      <th>RACE</th>\n",
       "      <th>EMPLOYMENT_TYPE</th>\n",
       "      <th>GENDER</th>\n",
       "      <th>EMPLOYMENT_STATUS</th>\n",
       "      <th>JOB_DATE</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HIRE_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2006-06-12</th>\n",
       "      <td>0</td>\n",
       "      <td>ASSISTANT DIRECTOR (EX LVL)</td>\n",
       "      <td>Municipal Courts Department</td>\n",
       "      <td>121862.0</td>\n",
       "      <td>Hispanic/Latino</td>\n",
       "      <td>Full Time</td>\n",
       "      <td>Female</td>\n",
       "      <td>Active</td>\n",
       "      <td>2012-10-13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-07-19</th>\n",
       "      <td>1</td>\n",
       "      <td>LIBRARY ASSISTANT</td>\n",
       "      <td>Library</td>\n",
       "      <td>26125.0</td>\n",
       "      <td>Hispanic/Latino</td>\n",
       "      <td>Full Time</td>\n",
       "      <td>Female</td>\n",
       "      <td>Active</td>\n",
       "      <td>2010-09-18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-02-03</th>\n",
       "      <td>2</td>\n",
       "      <td>POLICE OFFICER</td>\n",
       "      <td>Houston Police Department-HPD</td>\n",
       "      <td>45279.0</td>\n",
       "      <td>White</td>\n",
       "      <td>Full Time</td>\n",
       "      <td>Male</td>\n",
       "      <td>Active</td>\n",
       "      <td>2015-02-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1982-02-08</th>\n",
       "      <td>3</td>\n",
       "      <td>ENGINEER/OPERATOR</td>\n",
       "      <td>Houston Fire Department (HFD)</td>\n",
       "      <td>63166.0</td>\n",
       "      <td>White</td>\n",
       "      <td>Full Time</td>\n",
       "      <td>Male</td>\n",
       "      <td>Active</td>\n",
       "      <td>1991-05-25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1989-06-19</th>\n",
       "      <td>4</td>\n",
       "      <td>ELECTRICIAN</td>\n",
       "      <td>General Services Department</td>\n",
       "      <td>56347.0</td>\n",
       "      <td>White</td>\n",
       "      <td>Full Time</td>\n",
       "      <td>Male</td>\n",
       "      <td>Active</td>\n",
       "      <td>1994-10-22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            UNIQUE_ID               POSITION_TITLE  \\\n",
       "HIRE_DATE                                            \n",
       "2006-06-12          0  ASSISTANT DIRECTOR (EX LVL)   \n",
       "2000-07-19          1            LIBRARY ASSISTANT   \n",
       "2015-02-03          2               POLICE OFFICER   \n",
       "1982-02-08          3            ENGINEER/OPERATOR   \n",
       "1989-06-19          4                  ELECTRICIAN   \n",
       "\n",
       "                               DEPARTMENT  BASE_SALARY             RACE  \\\n",
       "HIRE_DATE                                                                 \n",
       "2006-06-12    Municipal Courts Department     121862.0  Hispanic/Latino   \n",
       "2000-07-19                        Library      26125.0  Hispanic/Latino   \n",
       "2015-02-03  Houston Police Department-HPD      45279.0            White   \n",
       "1982-02-08  Houston Fire Department (HFD)      63166.0            White   \n",
       "1989-06-19    General Services Department      56347.0            White   \n",
       "\n",
       "           EMPLOYMENT_TYPE  GENDER EMPLOYMENT_STATUS   JOB_DATE  \n",
       "HIRE_DATE                                                        \n",
       "2006-06-12       Full Time  Female            Active 2012-10-13  \n",
       "2000-07-19       Full Time  Female            Active 2010-09-18  \n",
       "2015-02-03       Full Time    Male            Active 2015-02-03  \n",
       "1982-02-08       Full Time    Male            Active 1991-05-25  \n",
       "1989-06-19       Full Time    Male            Active 1994-10-22  "
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "employee = pd.read_csv('data/employee.csv', \n",
    "                       parse_dates=['JOB_DATE', 'HIRE_DATE'], \n",
    "                       index_col='HIRE_DATE')\n",
    "employee.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GENDER\n",
       "Female    52200.0\n",
       "Male      57400.0\n",
       "Name: BASE_SALARY, dtype: float64"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "employee.groupby('GENDER')['BASE_SALARY'].mean().round(-2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "HIRE_DATE\n",
       "1958-01-01     81200.0\n",
       "1968-01-01    106500.0\n",
       "1978-01-01     69600.0\n",
       "1988-01-01     62300.0\n",
       "1998-01-01     58200.0\n",
       "2008-01-01     47200.0\n",
       "Freq: 10AS-JAN, Name: BASE_SALARY, dtype: float64"
      ]
     },
     "execution_count": 133,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "employee.resample('10AS')['BASE_SALARY'].mean().round(-2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GENDER  HIRE_DATE \n",
       "Female  1975-01-01     51600.0\n",
       "        1985-01-01     57600.0\n",
       "        1995-01-01     55500.0\n",
       "        2005-01-01     51700.0\n",
       "        2015-01-01     38600.0\n",
       "Male    1958-01-01     81200.0\n",
       "        1968-01-01    106500.0\n",
       "        1978-01-01     72300.0\n",
       "        1988-01-01     64600.0\n",
       "        1998-01-01     59700.0\n",
       "        2008-01-01     47200.0\n",
       "Name: BASE_SALARY, dtype: float64"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sal_avg = employee.groupby('GENDER').resample('10AS')['BASE_SALARY'].mean().round(-2)\n",
    "sal_avg"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>GENDER</th>\n",
       "      <th>Female</th>\n",
       "      <th>Male</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HIRE_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1958-01-01</th>\n",
       "      <td>NaN</td>\n",
       "      <td>81200.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1968-01-01</th>\n",
       "      <td>NaN</td>\n",
       "      <td>106500.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1975-01-01</th>\n",
       "      <td>51600.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1978-01-01</th>\n",
       "      <td>NaN</td>\n",
       "      <td>72300.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1985-01-01</th>\n",
       "      <td>57600.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1988-01-01</th>\n",
       "      <td>NaN</td>\n",
       "      <td>64600.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995-01-01</th>\n",
       "      <td>55500.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1998-01-01</th>\n",
       "      <td>NaN</td>\n",
       "      <td>59700.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2005-01-01</th>\n",
       "      <td>51700.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008-01-01</th>\n",
       "      <td>NaN</td>\n",
       "      <td>47200.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-01</th>\n",
       "      <td>38600.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "GENDER       Female      Male\n",
       "HIRE_DATE                    \n",
       "1958-01-01      NaN   81200.0\n",
       "1968-01-01      NaN  106500.0\n",
       "1975-01-01  51600.0       NaN\n",
       "1978-01-01      NaN   72300.0\n",
       "1985-01-01  57600.0       NaN\n",
       "1988-01-01      NaN   64600.0\n",
       "1995-01-01  55500.0       NaN\n",
       "1998-01-01      NaN   59700.0\n",
       "2005-01-01  51700.0       NaN\n",
       "2008-01-01      NaN   47200.0\n",
       "2015-01-01  38600.0       NaN"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sal_avg.unstack('GENDER')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('1958-12-29 00:00:00')"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "employee[employee['GENDER'] == 'Male'].index.min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('1975-06-09 00:00:00')"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "employee[employee['GENDER'] == 'Female'].index.min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GENDER  HIRE_DATE \n",
       "Female  1968-01-01         NaN\n",
       "        1978-01-01     57100.0\n",
       "        1988-01-01     57100.0\n",
       "        1998-01-01     54700.0\n",
       "        2008-01-01     47300.0\n",
       "Male    1958-01-01     81200.0\n",
       "        1968-01-01    106500.0\n",
       "        1978-01-01     72300.0\n",
       "        1988-01-01     64600.0\n",
       "        1998-01-01     59700.0\n",
       "        2008-01-01     47200.0\n",
       "Name: BASE_SALARY, dtype: float64"
      ]
     },
     "execution_count": 138,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sal_avg2 = employee.groupby(['GENDER', pd.Grouper(freq='10AS')])['BASE_SALARY'].mean().round(-2)\n",
    "sal_avg2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>GENDER</th>\n",
       "      <th>Female</th>\n",
       "      <th>Male</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>HIRE_DATE</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1958-01-01</th>\n",
       "      <td>NaN</td>\n",
       "      <td>81200.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1968-01-01</th>\n",
       "      <td>NaN</td>\n",
       "      <td>106500.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1978-01-01</th>\n",
       "      <td>57100.0</td>\n",
       "      <td>72300.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1988-01-01</th>\n",
       "      <td>57100.0</td>\n",
       "      <td>64600.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1998-01-01</th>\n",
       "      <td>54700.0</td>\n",
       "      <td>59700.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008-01-01</th>\n",
       "      <td>47300.0</td>\n",
       "      <td>47200.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "GENDER       Female      Male\n",
       "HIRE_DATE                    \n",
       "1958-01-01      NaN   81200.0\n",
       "1968-01-01      NaN  106500.0\n",
       "1978-01-01  57100.0   72300.0\n",
       "1988-01-01  57100.0   64600.0\n",
       "1998-01-01  54700.0   59700.0\n",
       "2008-01-01  47300.0   47200.0"
      ]
     },
     "execution_count": 139,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sal_final = sal_avg2.unstack('GENDER')\n",
    "sal_final"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## How it works..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 140,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'resample' in dir(employee.groupby('GENDER'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 141,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "'groupby' in dir(employee.resample('10AS'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## There's more..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>GENDER</th>\n",
       "      <th>Female</th>\n",
       "      <th>Male</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1958-1967</th>\n",
       "      <td>NaN</td>\n",
       "      <td>81200.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1968-1977</th>\n",
       "      <td>NaN</td>\n",
       "      <td>106500.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1978-1987</th>\n",
       "      <td>57100.0</td>\n",
       "      <td>72300.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1988-1997</th>\n",
       "      <td>57100.0</td>\n",
       "      <td>64600.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1998-2007</th>\n",
       "      <td>54700.0</td>\n",
       "      <td>59700.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008-2017</th>\n",
       "      <td>47300.0</td>\n",
       "      <td>47200.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "GENDER      Female      Male\n",
       "1958-1967      NaN   81200.0\n",
       "1968-1977      NaN  106500.0\n",
       "1978-1987  57100.0   72300.0\n",
       "1988-1997  57100.0   64600.0\n",
       "1998-2007  54700.0   59700.0\n",
       "2008-2017  47300.0   47200.0"
      ]
     },
     "execution_count": 142,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "years = sal_final.index.year\n",
    "years_right = years + 9\n",
    "sal_final.index = years.astype(str) + '-' + years_right.astype(str)\n",
    "sal_final"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([Interval(1958.0, 1970.0, closed='right'),\n",
       "       Interval(1970.0, 1981.0, closed='right'),\n",
       "       Interval(1981.0, 1993.0, closed='right'),\n",
       "       Interval(1993.0, 2004.0, closed='right'),\n",
       "       Interval(2004.0, 2016.0, closed='right')], dtype=object)"
      ]
     },
     "execution_count": 143,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cuts = pd.cut(employee.index.year, bins=5, precision=0)\n",
    "cuts.categories.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>GENDER</th>\n",
       "      <th>Female</th>\n",
       "      <th>Male</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>(1958.0, 1970.0]</th>\n",
       "      <td>NaN</td>\n",
       "      <td>85400.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(1970.0, 1981.0]</th>\n",
       "      <td>54400.0</td>\n",
       "      <td>72700.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(1981.0, 1993.0]</th>\n",
       "      <td>55700.0</td>\n",
       "      <td>69300.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(1993.0, 2004.0]</th>\n",
       "      <td>56500.0</td>\n",
       "      <td>62300.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(2004.0, 2016.0]</th>\n",
       "      <td>49100.0</td>\n",
       "      <td>49800.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "GENDER             Female     Male\n",
       "(1958.0, 1970.0]      NaN  85400.0\n",
       "(1970.0, 1981.0]  54400.0  72700.0\n",
       "(1981.0, 1993.0]  55700.0  69300.0\n",
       "(1993.0, 2004.0]  56500.0  62300.0\n",
       "(2004.0, 2016.0]  49100.0  49800.0"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "employee.groupby([cuts, 'GENDER'])['BASE_SALARY'].mean().unstack('GENDER').round(-2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Finding the last time crime was 20% lower with merge_asof"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "crime_sort = pd.read_hdf('data/crime.h5', 'crime') \\\n",
    "               .set_index('REPORTED_DATE') \\\n",
    "               .sort_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2017-09-29 06:16:00')"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.index.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2017-08-31 23:52:00')"
      ]
     },
     "execution_count": 147,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort = crime_sort[:'2017-8']\n",
    "crime_sort.index.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "REPORTED_DATE  OFFENSE_CATEGORY_ID\n",
       "2012-01-31     aggravated-assault     113\n",
       "               all-other-crimes       124\n",
       "               arson                    5\n",
       "               auto-theft             275\n",
       "               burglary               343\n",
       "dtype: int64"
      ]
     },
     "execution_count": 148,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "all_data = crime_sort.groupby([pd.Grouper(freq='M'), 'OFFENSE_CATEGORY_ID']).size()\n",
    "all_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>Total</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2014-12-31</td>\n",
       "      <td>murder</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2013-01-31</td>\n",
       "      <td>arson</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2016-05-31</td>\n",
       "      <td>murder</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2012-12-31</td>\n",
       "      <td>murder</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2016-12-31</td>\n",
       "      <td>murder</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  REPORTED_DATE OFFENSE_CATEGORY_ID  Total\n",
       "0    2014-12-31              murder      1\n",
       "1    2013-01-31               arson      1\n",
       "2    2016-05-31              murder      1\n",
       "3    2012-12-31              murder      1\n",
       "4    2016-12-31              murder      1"
      ]
     },
     "execution_count": 149,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "all_data = all_data.sort_values().reset_index(name='Total')\n",
    "all_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>Total</th>\n",
       "      <th>Total_Goal</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>murder</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>arson</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>sexual-assault</td>\n",
       "      <td>57</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>robbery</td>\n",
       "      <td>108</td>\n",
       "      <td>86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>white-collar-crime</td>\n",
       "      <td>138</td>\n",
       "      <td>110</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  REPORTED_DATE OFFENSE_CATEGORY_ID  Total  Total_Goal\n",
       "0    2017-08-31              murder      7           5\n",
       "1    2017-08-31               arson      7           5\n",
       "2    2017-08-31      sexual-assault     57          45\n",
       "3    2017-08-31             robbery    108          86\n",
       "4    2017-08-31  white-collar-crime    138         110"
      ]
     },
     "execution_count": 150,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "goal = all_data[all_data['REPORTED_DATE'] == '2017-8-31'].reset_index(drop=True)\n",
    "goal['Total_Goal'] = goal['Total'].mul(.8).astype(int)\n",
    "goal.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>REPORTED_DATE_Current</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>Total_Current</th>\n",
       "      <th>Total_Goal</th>\n",
       "      <th>REPORTED_DATE_Last</th>\n",
       "      <th>Total_Last</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>murder</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>2017-01-31</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>arson</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>2012-01-31</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>sexual-assault</td>\n",
       "      <td>57</td>\n",
       "      <td>45</td>\n",
       "      <td>2013-01-31</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>robbery</td>\n",
       "      <td>108</td>\n",
       "      <td>86</td>\n",
       "      <td>2015-03-31</td>\n",
       "      <td>86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>white-collar-crime</td>\n",
       "      <td>138</td>\n",
       "      <td>110</td>\n",
       "      <td>2016-10-31</td>\n",
       "      <td>110</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>aggravated-assault</td>\n",
       "      <td>195</td>\n",
       "      <td>156</td>\n",
       "      <td>2016-05-31</td>\n",
       "      <td>154</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>other-crimes-against-persons</td>\n",
       "      <td>376</td>\n",
       "      <td>300</td>\n",
       "      <td>2014-04-30</td>\n",
       "      <td>285</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>burglary</td>\n",
       "      <td>432</td>\n",
       "      <td>345</td>\n",
       "      <td>2012-01-31</td>\n",
       "      <td>343</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>auto-theft</td>\n",
       "      <td>599</td>\n",
       "      <td>479</td>\n",
       "      <td>2017-07-31</td>\n",
       "      <td>477</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>drug-alcohol</td>\n",
       "      <td>636</td>\n",
       "      <td>508</td>\n",
       "      <td>2015-05-31</td>\n",
       "      <td>505</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>theft-from-motor-vehicle</td>\n",
       "      <td>675</td>\n",
       "      <td>540</td>\n",
       "      <td>2015-03-31</td>\n",
       "      <td>535</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>larceny</td>\n",
       "      <td>877</td>\n",
       "      <td>701</td>\n",
       "      <td>2015-01-31</td>\n",
       "      <td>697</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>public-disorder</td>\n",
       "      <td>878</td>\n",
       "      <td>702</td>\n",
       "      <td>2015-12-31</td>\n",
       "      <td>699</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>all-other-crimes</td>\n",
       "      <td>1583</td>\n",
       "      <td>1266</td>\n",
       "      <td>2016-11-30</td>\n",
       "      <td>1264</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>2017-08-31</td>\n",
       "      <td>traffic-accident</td>\n",
       "      <td>2126</td>\n",
       "      <td>1700</td>\n",
       "      <td>2013-12-31</td>\n",
       "      <td>1697</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   REPORTED_DATE_Current           OFFENSE_CATEGORY_ID  Total_Current  \\\n",
       "0             2017-08-31                        murder              7   \n",
       "1             2017-08-31                         arson              7   \n",
       "2             2017-08-31                sexual-assault             57   \n",
       "3             2017-08-31                       robbery            108   \n",
       "4             2017-08-31            white-collar-crime            138   \n",
       "5             2017-08-31            aggravated-assault            195   \n",
       "6             2017-08-31  other-crimes-against-persons            376   \n",
       "7             2017-08-31                      burglary            432   \n",
       "8             2017-08-31                    auto-theft            599   \n",
       "9             2017-08-31                  drug-alcohol            636   \n",
       "10            2017-08-31      theft-from-motor-vehicle            675   \n",
       "11            2017-08-31                       larceny            877   \n",
       "12            2017-08-31               public-disorder            878   \n",
       "13            2017-08-31              all-other-crimes           1583   \n",
       "14            2017-08-31              traffic-accident           2126   \n",
       "\n",
       "    Total_Goal REPORTED_DATE_Last  Total_Last  \n",
       "0            5         2017-01-31           5  \n",
       "1            5         2012-01-31           5  \n",
       "2           45         2013-01-31          45  \n",
       "3           86         2015-03-31          86  \n",
       "4          110         2016-10-31         110  \n",
       "5          156         2016-05-31         154  \n",
       "6          300         2014-04-30         285  \n",
       "7          345         2012-01-31         343  \n",
       "8          479         2017-07-31         477  \n",
       "9          508         2015-05-31         505  \n",
       "10         540         2015-03-31         535  \n",
       "11         701         2015-01-31         697  \n",
       "12         702         2015-12-31         699  \n",
       "13        1266         2016-11-30        1264  \n",
       "14        1700         2013-12-31        1697  "
      ]
     },
     "execution_count": 151,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.merge_asof(goal, all_data, left_on='Total_Goal', right_on='Total', \n",
    "              by='OFFENSE_CATEGORY_ID', suffixes=('_Current', '_Last'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## There's more..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2012-05-17 14:20', 'T')"
      ]
     },
     "execution_count": 152,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Period(year=2012, month=5, day=17, hour=14, minute=20, freq='T')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PeriodIndex(['2012-01', '2012-01', '2012-01', '2012-01', '2012-01', '2012-01',\n",
       "             '2012-01', '2012-01', '2012-01', '2012-01',\n",
       "             ...\n",
       "             '2017-08', '2017-08', '2017-08', '2017-08', '2017-08', '2017-08',\n",
       "             '2017-08', '2017-08', '2017-08', '2017-08'],\n",
       "            dtype='period[M]', name='REPORTED_DATE', length=453568, freq='M')"
      ]
     },
     "execution_count": 153,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "crime_sort.index.to_period('M')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>REPORTED_DATE</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>Total</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2014-12</td>\n",
       "      <td>murder</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2013-01</td>\n",
       "      <td>arson</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2016-05</td>\n",
       "      <td>murder</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2012-12</td>\n",
       "      <td>murder</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2016-12</td>\n",
       "      <td>murder</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  REPORTED_DATE OFFENSE_CATEGORY_ID  Total\n",
       "0       2014-12              murder      1\n",
       "1       2013-01               arson      1\n",
       "2       2016-05              murder      1\n",
       "3       2012-12              murder      1\n",
       "4       2016-12              murder      1"
      ]
     },
     "execution_count": 154,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ad_period = crime_sort.groupby([lambda x: x.to_period('M'), \n",
    "                                'OFFENSE_CATEGORY_ID']).size()\n",
    "ad_period = ad_period.sort_values() \\\n",
    "                     .reset_index(name='Total') \\\n",
    "                     .rename(columns={'level_0':'REPORTED_DATE'})\n",
    "ad_period.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 155,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cols = ['OFFENSE_CATEGORY_ID', 'Total']\n",
    "all_data[cols].equals(ad_period[cols])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>REPORTED_DATE_Current</th>\n",
       "      <th>OFFENSE_CATEGORY_ID</th>\n",
       "      <th>Total_Current</th>\n",
       "      <th>Total_Goal</th>\n",
       "      <th>REPORTED_DATE_Last</th>\n",
       "      <th>Total_Last</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2017-08</td>\n",
       "      <td>murder</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>2017-01</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2017-08</td>\n",
       "      <td>arson</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>2012-01</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2017-08</td>\n",
       "      <td>sexual-assault</td>\n",
       "      <td>57</td>\n",
       "      <td>45</td>\n",
       "      <td>2013-01</td>\n",
       "      <td>45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2017-08</td>\n",
       "      <td>robbery</td>\n",
       "      <td>108</td>\n",
       "      <td>86</td>\n",
       "      <td>2015-03</td>\n",
       "      <td>86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2017-08</td>\n",
       "      <td>white-collar-crime</td>\n",
       "      <td>138</td>\n",
       "      <td>110</td>\n",
       "      <td>2016-10</td>\n",
       "      <td>110</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  REPORTED_DATE_Current OFFENSE_CATEGORY_ID  Total_Current  Total_Goal  \\\n",
       "0               2017-08              murder              7           5   \n",
       "1               2017-08               arson              7           5   \n",
       "2               2017-08      sexual-assault             57          45   \n",
       "3               2017-08             robbery            108          86   \n",
       "4               2017-08  white-collar-crime            138         110   \n",
       "\n",
       "  REPORTED_DATE_Last  Total_Last  \n",
       "0            2017-01           5  \n",
       "1            2012-01           5  \n",
       "2            2013-01          45  \n",
       "3            2015-03          86  \n",
       "4            2016-10         110  "
      ]
     },
     "execution_count": 156,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "aug_2018 = pd.Period('2017-8', freq='M')\n",
    "goal_period = ad_period[ad_period['REPORTED_DATE'] == aug_2018].reset_index(drop=True)\n",
    "goal_period['Total_Goal'] = goal_period['Total'].mul(.8).astype(int)\n",
    "\n",
    "pd.merge_asof(goal_period, ad_period, left_on='Total_Goal', right_on='Total', \n",
    "                  by='OFFENSE_CATEGORY_ID', suffixes=('_Current', '_Last')).head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
